重置wordpress循环的三个函数

当在一个wordpress主题模板中使用多个循环的时候,你需要在每次循环后面重置它。如果不重置的话可能会发生不可预料的结果。重置wp循环的方法主要有以下三种:

  •  rewind_posts()
  • wp_reset_postdata()
  • wp_reset_query()

使用rewind_posts()

在主循环后面使用rewind_posts()来重置循环,代码如下所示

//开始主循环
<?php
    if(have_posts()):while(have_posts()):the_post();
        the_title();
    endwhile;
    endif;
    //使用rewind_posts()来重用循环
    rewind_posts();
    //开始新的循环
    while(have_posts()):the_post();
    the_content();
    endwhile;
?>

使用wp_reset_postdata()

当你使用WP_Query执行了多个循环以后,你需要使用wp_reset_postdata()来重置循环,这个方法使全局变量恢复到主查询的状态。代码如下所示

<?php
$args=array('posts_per_page' => 3);
$the_query = new WP_Query($args);
if($the_query -> hava_posts()):
    while($the_query->have_posts()):$the_query->the_post();
        the_title();
        the_excerpt();
    endwhile;
endif;
wp_reset_postdata();
?>

使用wp_reset_query()

如果你在循环中使用了query_posts(),那么你必须使用wp_reset_query()来重置你的循环。当然你也可以在WP_Query循环后面使用它,因为在它的内部调用了wp_reset_postdata()。但是在WP_Query查询后面使用wp_reset_postdata()是推荐的做法。

发表评论