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