当在一个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()是推荐的做法。