Wordpress add_filter发生500错误

时间:2013-03-16 01:31:32

标签: php wordpress

您好我正在编写一个函数来修改帖子内容和更多信息。但是这样做会导致网站无法加载并引发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;  
}

有人能指出这段代码有什么问题吗?

1 个答案:

答案 0 :(得分: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;