Wp_Reset_postdata()在主循环之后是冗余的吗?

时间:2016-07-25 作者:ben

我对一个例子感到困惑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() 在主回路之后?

1 个回复
最合适的回答,由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()

相关推荐

当in_the_loop()为假时,何时以及为什么is_Single(‘my_cpt’)为真?

我正在使用模板系统的示例代码。此地址的页码:http://project.test/my_cpt/hello-post/.无法理解原因is_singular( \'my_cpt\' ) 是true 虽然in_the_loop() 是false.在页面模板中The Loop "E;“工程”:if ( have_posts() ) { while ( have_posts() ) { the_post(); ?>