2013-03-16 80 views
0

你好,我正在寫一個函數來修改後的內容和一些更多的信息。但是,這樣做會使網站不會加載並引發500內部服務器錯誤。這是我用於鉤子的代碼。WordPress的add_filter使500錯誤

add_filter("the_content","add_related_pics",1); 

function add_related_pics($content){ 
    $pics = ""; 
    $pics.= '<ul>'; 
    $tag = get_post_meta(get_the_ID(), 'highlight-tag', true); 
    $original_query = $wp_query; 
    $wp_query = null; 
    $args=array('posts_per_page'=>5, 'tag' => $tag,'orderby' => 'rand'); 
    $wp_query = new WP_Query($args); 
    if (have_posts()) : 
     while (have_posts()) : the_post(); 
      $pics.= '<li>'; 
     preg_match('@<img.+src="(.*)".*>@Uims', get_the_content(), $matches); 
     $src = $matches[1]; 
      $pics.='<a href="'.get_permalink().'"><img src="'.$src.'" height="50" width="50" /></a>'; 
     $pics.= '</li>'; 
     endwhile; 
    endif; 
    $wp_query = null; 
    $wp_query = $original_query; 
    wp_reset_postdata(); 
    $pics.='</ul>'; 
    return $content.$pics; 
} 

任何人都可以指出,這段代碼有什麼問題?

+0

刪除一切,嘗試一個函數在一個時間查明什麼問題。例如。首先只返回$內容,不做其他任何事情,看看它是否有錯誤,嘗試沒有preg_match的wp_query等。 – kennypu 2013-03-16 01:42:13

+0

已經做到了它在腳本中的循環出錯。 – 2013-03-16 02:21:11

回答

0

您沒有使用wp_query對象,爲什麼你有一個錯誤,多數民衆贊成。

它添加到你的代碼,你應該罰款。

if ($wp_query->have_posts() ) : 
    while ($wp_query->have_posts()) : 
    $wp_query->the_post(); 
     $pics.= '<li>'; 
    preg_match('@<img.+src="(.*)".*>@Uims', get_the_content(), $matches); 
    $src = $matches[1]; 
     $pics.='<a href="'.get_permalink().'"><img src="'.$src.'" height="50" width="50" /></a>'; 
    $pics.= '</li>'; 
    endwhile; 
    endif; 

除非你要使用$orignal_query你不需要的wp_query變量重新設置它。

因此,在這兩種情況下襬脫你的下面的代碼:

$original_query = $wp_query; 
$wp_query = null;