WordPress循环问题:多个循环,index.php和is_pages导致下一页出现重复帖子

时间:2011-04-30 作者:VicePrez

我不确定我所经历的是一个bug(由于最近升级到3.1.2)还是糟糕的编码。自从我升级到3.1.2版以来,我的索引页上出现了两个循环的问题。

以下是我索引页的内容:

<?php
    if ( ! is_paged() && is_front_page() ) {

    echo \'<h6 class="sec1 title">FEATURE</h6>\';
    $sticky = get_option( \'sticky_posts\' );

         if ( isset( $sticky[0] ) ) {
            $args = array(
                \'posts_per_page\' => 3,
                \'post__in\'  => $sticky,
                \'ignore_sticky_posts\' => 1);

            $featured_query = new WP_query( $args );
            while ($featured_query->have_posts() ) :
            $featured_query->the_post();

            get_template_part( \'content\', \'featured\' );

            endwhile;
        } // endif sticky
    } // endif is_paged
    ?>

    <?php
        $sticky = get_option( \'sticky_posts\' );
        echo \'<h6 class="sec1 title">LATEST ARTICLES</h6>\';
        $paged = get_query_var( \'paged\' ) ? get_query_var( \'paged\' ) : 1;
        $query_args = array(
            \'posts_per_page\' => 10,
            \'paged\' => $paged,
            \'post__not_in\' => $sticky
            );

        query_posts($query_args);
        if (have_posts() ) :
        while (have_posts() ) :
        the_post();

        get_template_part( \'content\', get_post_format() );
    ?>

    <!--<?php trackback_rdf(); ?>-->

    <?php endwhile; else: ?>

    <div class="box">
        <p>
            <?php _e( \'Sorry, no posts matched your criteria.\' ); ?>
        </p>
    </div>

    <?php endif; ?>

// Navigation comes over here
例如,第一个循环(粘性帖子)没有分页,会产生3 posts, 第二个循环(所有其他帖子)被分页,生成10 posts. 我遇到的问题是,当我转到下一页时,最后一页3 posts 从第1页的第二个循环开始,在第2页的顶部重复。

注意:第一个循环仅在第1页上,第二页不会重复,这正是我想要的。

注2:我假设第二个循环正在考虑——以某种奇怪的方式,第一个循环的帖子是它自己的。但它仍然显示第一页上的10篇文章+第一个循环中的3篇文章。

因此本质上:

PAGE 1:

循环1:3个帖子(3个独特帖子)

循环2:10个帖子(10个独特帖子)

PAGE 2:

循环1:未按预期执行,原因是( ! is_paged() )

循环2:10篇文章(7篇独特,3篇重复于第一页的最后3篇(第二篇循环)

这就是我尝试的:我删除了( ! is_paged() && is_front_page ) 条件以及整个第一个循环,问题得到了解决。

我做错了什么?

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