我需要遍历页面模板中主要内容之前的一组帖子。很简单:
$getCoverArticles = array(
'tax_query' => array(
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => 'cover',
),
)
);
$queryCoverArticles = new WP_Query( $getCoverArticles );
if($queryCoverArticles->have_posts() ) {
while($queryCoverArticles->have_posts() ) {
$queryCoverArticles->the_post();
?>
<a><?php the_title(); ?></a>
<?php
}
}
问题是,该方法设置了全局post对象,因此在此循环后尝试获取the_content()
会给出循环中最后一个帖子的内容...
似乎只是为了title属性,而在全局post对象周围变了一点。有没有一种方法可以轻松获得标题而不将其分配为全局对象?
答案 0 :(得分:2)
注意:如果您在查询中使用the_post(),则需要随后运行wp_reset_postdata(),以使Template Tags再次使用主查询的当前帖子。< / p>
所以:
if($queryCoverArticles->have_posts() ) {
while($queryCoverArticles->have_posts() ) {
$queryCoverArticles->the_post();
?>
<a><?php the_title(); ?></a>
<?php
}
}
// Restore original post data
wp_reset_postdata();
...应该解决该问题。
答案 1 :(得分:1)
完成额外的查询后,立即添加wp_reset_postdata();
,并应恢复查询,以便全局$ post引用主查询中的当前帖子。
答案 2 :(得分:0)
请尝试以下代码,希望对您有用。
<?php
if ($queryCoverArticles->have_posts() ) :
while ( $queryCoverArticles->have_posts() ) : $queryCoverArticles->the_post();
?><a href="<?php the_permalink() ?>"><?php the_title() ?></a><br /><?php
endwhile;
endif;
wp_reset_postdata();
?>