我对一个例子感到困惑from the docs:
<?php
// The main query.
if ( have_posts() ) : while ( have_posts() ) : the_post();
the_title();
the_content();
endwhile;
else :
// When no posts are found, output this text.
_e( \'Sorry, no posts matched your criteria.\' );
endif;
wp_reset_postdata();
/*
* The secondary query. Note that you can use any category name here. In our example,
* we use "example-category".
*/
$secondary_query = new WP_Query( \'category_name=example-category\' );
// The second loop. if ( $secondary_query->have_posts() )
echo \'<ul>\';
while ( $secondary_query->have_posts() ) :
$secondary_query->the_post();
echo \'<li>\' . get_the_title() . \'</li>\';
endwhile;
echo \'</ul>\';
endif;
wp_reset_postdata();
?>
不是第一个
wp_reset_postdata()
完全冗余?查询前
$post
, 二次查询无论如何都会覆盖它,对吗?是否有过打电话有意义的情况
wp_reset_postdata()
在主回路之后?
最合适的回答,由SO网友:stoi2m1 整理而成
首次使用wp_reset_postdata()
不是多余的,而是不必要的。
根据法典
使用此函数可以在使用新WP\\U查询的辅助查询循环之后还原主查询循环的全局$post变量。它将$post变量还原为主查询中的当前post。
因此,只能在二次查询之后使用它来重置主查询的内容。
NOTE: 更好的放置位置是在if中,而不是在else之后
if ( $arg ) :
// loop
wp_reset_postdata();
else :
// no results
endif;
更多信息
wp_reset_postdata()