我对作者使用相同的模板。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;
?>
我的线圈怎么了?
最合适的回答,由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
对象以跟踪当前帖子。