2011-01-06 90 views
0

我正在竊聽一個wordpress插件。由於我在發佈推文的插件中,我使用了類似echo或print的內容。我已經確定了導致問​​題的一行,但不確定它究竟是什麼,因爲我無法打印或回顯。幫助調試php代碼

$tagarray = wp_get_post_tags($post_id); //returns an array 
$tags = "tag:"; 
if (count($tagarray) > 0){ 
    foreach ($tagarray as $tag){ 
     //$tags .= "mytag "; // This line works when quotes are removed. 
     //$tags = strval($tag); //This doesn't. 
    } 
} 

我試過各種操作$標籤,如鑄造等,但沒有任何工作。關於如何調試的任何想法?我最後的手段是將打印值發佈到文件中。任何其他想法?

+0

這是一個在後端服務器端運行的插件。所以var_dump等不會在我的瀏覽器上發佈。 – Neo 2011-01-06 12:10:02

+1

您仍然可以執行print_r或其他操作,您只需要以不同的方式執行此操作。打開一個文本文件並輸出結果。 – Phoenix 2011-01-06 12:44:39

回答

1

你的代碼不完整的。

是,wp_get_post_tags()返回的標籤列表,但在列表中的每個標籤本身包含下列對象:

  • term_id
  • term_group
  • term_taxonomy_id
  • 分類法
  • d ESCRIPTION

所以,你需要做的這個代替:對於調試PHP我用PhpED 你可以在代碼中設置斷點,沒有任何修改, 所以

$tagarray = wp_get_post_tags($post_id); //returns an array 
$tags = "tag:"; 
if (count($tagarray) > 0){ 
    foreach ($tagarray as $tag){ 
     $tags .= strval($tag->name); 
    } 
} 
0

用於調試用var_dump或print_r的

1

在你使用循環:

var_dump($tag); 
die(); 

你應該能夠看到什麼類型的爲$標記,什麼樣的內容。循環將在第一個值後立即停止。

1

我覺得FirePHPFireBug/Firefox的插件)非常適用於調試php,您可以在發送標題之前將消息,數組,變量發送到螢火蟲控制檯。

0

,因爲你錯過了在第二行

$tagarray = wp_get_post_tags($post_id); //returns an array 
$tags = "tag:"; 
if (count($tagarray) > 0){ 
    foreach ($tagarray as $tag){ 
     //$tags .= "mytag "; // This line works when quotes are removed. 
     $tags .= strval($tag); //This will work Changed = to .= 
    } 
} 

到concatation運算符(。)不工作,如果正在尋找調試代碼FirePHP是一個很好的工具,你也可以使用任何PHP IDE內置的調試像日食或其他東西。

而且在WordPress可以使用WP-Debug Plugin

0

要調試,因爲它不會輸出任何類型的調試信息到瀏覽器的,做到這一點,或者類似的東西:

$logger = fopen('debug.log','a'); 
fwrite($logger,"Begin Debug - " . time() . "\n------------\n"); 
$tagarray = wp_get_post_tags($post_id); //returns an array 
$tags = "tag:"; 
if (count($tagarray) > 0){ 
    foreach ($tagarray as $tag){ 
     //$tags .= "mytag "; // This line works when quotes are removed. 
     //$tags = strval($tag); //This doesn't. 
     fwrite($logger,$tag . "\n"); 
    } 
} 
fwrite($logger,$tags . "\n"); 
fwrite($logger,print_r($tagarray) . "\n"); 
fwrite($logger,"----------\n End Debug \n\n"); 
fclose($logger); 
1

您不可能在代碼中留下回響。