WP循环被广泛用于打印Wordpress中的帖子列表:
<?php $loop = new WP_Query( array( \'post_type\' => \'ff\', \'ff\' => \'show_ff\', \'orderby\' => \'menu_order\', \'order\' => \'ASC\' ));
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<!-- here we\'re going to have all posts from show_ff category of ff type. -->
<?php endwhile; ?>
有没有一种方法可以显示例如3篇第一篇文章,然后是一些元素(在我的例子中是div),然后再显示3篇接下来的文章?
我知道我可以在每个div中执行6个循环,但也许还有其他方法可以打破这个代码?可能是while循环中的一些if循环?以下是我的想法:
(...)
while ( $loop->have_posts() ) : $loop->the_post();
echo \'3 first posts\';
echo \'<div class="special"></div>\';
echo \'3 last posts\';
endwhile; ?>
最合适的回答,由SO网友:t31os 整理而成
我想我还没有完全掌握这是如何工作的,但如果我假设只要循环至少有6个帖子,就需要在循环的第三个结果之后插入额外的标记。。
示例当当前迭代至少有6篇文章时,在第三篇文章之后插入额外标记
<?php
if( $loop->have_posts() ) :
//$post_count = $loop->found_posts; // <-- think this is the total, corrected below
$post_count = $loop->post_count; // should be the result count for the current page
$loop_count = 0;
while ( $loop->have_posts() ) : $loop->the_post();
$loop_count++;
?>
<!-- your regular loop markup, eg. title, content, etc.. -->
<?php
if( $post_count >= 6 && $loop_count == 3 ) :
?>
<!-- extra markup to put in when it\'s the end of the third post of this loop -->
<?php
endif;
endwhile;
endif;
?>
这样可以避免使用偏移量,并在必要时使用分页。我还没有测试代码,但我之前已经给出了很多这样的例子,只要告诉我任何问题,我就会重新检查(并测试)代码。