我为TweentySexten主题模板创建了一个子主题。我看到主回路位于索引中。但是注意到在while语句之后,没有显示wp_reset_postdata();
如果我把它放在那里,循环会有什么好处吗?
出于测试目的,我想在第一个循环下显示第二个循环,并设置页面限制。我想应该是这样的。。。
$mposts = new WP_Query(\'posts_per_page=3\');
while ( $mposts->have_posts() ) : $mposts->the_post();
get_template_part( \'template-parts/content\', get_post_format() );
endwhile;
如果这是正确的,我应该
wp_reset_query
, 在此过程之前还是之后?如果有它是有帮助的,为什么它放在哪里很重要?
谢谢
最合适的回答,由SO网友:Howdy_McGee 整理而成
首先,我们应该谈谈为什么需要使用wp_reset_query()
首先。
什么wp_reset_query()
是否重置global $wp_query
对象返回其原始状态。因为您正在创建new WP_Query 对象/实例,itdoes not 覆盖global $wp_query
对象唯一需要调用此函数的实际情况是query_posts()
99%的情况下你都不应该这样。
每当您循环执行自定义WP\\U查询时(使用The Loop 如上所述)它将覆盖global $post
对象,这意味着我们应该使用wp_reset_postdata()
相反因为它只在循环过程中发生,所以我们应该在循环之后调用函数。我们应该首先检查以确保我们有帖子,并确保我们不会不必要地调用此函数,我们希望将其放入条件中,如下面的示例所示:
$myquery = new WP_Query( $args );
if( $myquery->have_posts() ) {
while( $myquery->have_posts() ) {
$myquery->the_post();
/** Content **/
}
wp_reset_postdata();
}