循环从开头开始,Auth.php上的第二个While循环

时间:2014-07-07 作者:UzumakiDev

我对作者使用相同的模板。php和主页/博客。php。

我把一个环分成三部分。

<?php

if(have_posts()): the_post;
  //do a thing
endif:

$i = 0;
while(have_posts()): the_post();
  //do three things
$i++; if ($i == 3): break; endif; 
endwhile;

while(have_posts()): the_post();
  //do the rest
endwhile;

?>
这在主页/博客页面上似乎很好,但对作者来说却很好。php,在第二个while循环中,我从1开始收到帖子,而我不应该收到任何帖子。

对于这位特殊的作者,我有两篇帖子,因此我应该得到如下信息:

<?php

if(have_posts()): the_post();
  //post1
endif:

$i = 0;
while(have_posts()): the_post();
  //post2
$i++; if ($i == 3): break; endif; 
endwhile;

while(have_posts()): the_post();
  //no posts
endwhile;

?> 
但我得到的是:

<?php

if(have_posts()): the_post();
  //post1
endif:

$i = 0;
while(have_posts()): the_post();
  //post2
$i++; if ($i == 3): break; endif; 
endwhile;

while(have_posts()): the_post();
  //post1 + post2
endwhile;

?>
我的线圈怎么了?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

循环完成后,have_posts() 将其倒回calling 这个rewind_posts() 的方法$wp_query 对象,请参见here.

还有一个(更简单?)您可以尝试的设置:

while( have_posts()): the_post();
   if ( 0 == $wp_query->current_post ): 
       // post 1   
   elseif ( 1 == $wp_query->current_post ): 
       // post 2      
   else:        
       // other posts   
   endif;
endwhile;
wp_reset_postdata();
我们使用current_post 全球的财产$wp_query 对象以跟踪当前帖子。

结束

相关推荐

is_active-sidebar loop

因此,我有4个小部件,它们位于大3列中,当它们不活动时,我会放置一个占位符作为用户指南,以便用户知道在哪里放置什么。我确实成功地计算出了is\\u active,但它原来是一个很长的代码,我想知道是否有办法缩短它。从available-course-list-1到-4的小部件<?php if ( is_active_sidebar( \'available-course-list-1\' ) ) : ?> <div class=\"large-3 medium-3 col