Breaking the loop?

时间:2010-12-20 作者:Wordpressor

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; ?>  

2 个回复
最合适的回答,由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;
?>
这样可以避免使用偏移量,并在必要时使用分页。我还没有测试代码,但我之前已经给出了很多这样的例子,只要告诉我任何问题,我就会重新检查(并测试)代码。

SO网友:kevin

您可以将第一个循环中的帖子数量限制为三篇:

 <?php $args = array(\'showposts\' => 3); 
$the_query = new WP_Query($args); 
while ($the_query->have_posts()) : $the_query->the_post();
然后显示您的div,然后使用“offset”参数再次显示3篇文章,以排除3篇第一篇文章:

 $args2 = array(\'showposts\' => 3, \'offset\' => 3 );
 $the_query = new WP_Query($args2); 
while ($the_query->have_posts()) : $the_query->the_post(); 
中的更多信息codex.

结束

相关推荐

Paging in a sidebar mini loop

我切换到了另一个主题,并决定用其中的一些默认代码制作一个小部件,在自定义循环中显示我的美味帖子、推特帖子、su帖子和youtube视频(不包括主循环中的这些类别)。但是现在。。。分页不再工作。我制作了这个小部件:// =============================== EDL Sidebar Posts Widget ====================================== class SidebarPosts extends WP_Widget { &#x