具有多个循环的页面中断分页

时间:2012-01-19 作者:cw02

我做了一个自定义索引。php使我在同一页面上有多个循环,以便内容可以以不同的方式显示。我让它工作了,但是分页被破坏了。尽管我在谷歌上搜索了几个小时,尝试了各种各样的东西,但我还是无法让它工作。后续页面只显示与主页相同的内容。

我还使用WP PageNavi插件在底部进行分页。根据插件,每个后续页面在地址栏和页面底部都是正确的,但每个页面上的内容都是相同的。

我知道您不能同时“分页”和“偏移”,但我完全不知道如何修复它。

代码如下:

<!-- First Loop -->
    <div id="first-post">
        <?php
            $temp = $wp_query;
            $wp_query= null;
            $wp_query = new WP_Query();
            $wp_query->query(\'showposts=1\'.\'&paged=\'.$paged);

        ?>

        <?php $posts = get_posts(\'numberposts=1&offset=0\'); foreach ($posts as $post) : start_wp(); ?>    

        <?php static $count1 = 0; if ($count1 == "1") { break; } else { ?>

                        <!-- post stuff -->

                     <?php $wp_query = null; $wp_query = $temp;?>

        <?php $count1++; } ?>
        <?php endforeach; ?>

    </div> <!-- close first-post -->

    <!-- Second Loop -->
    <ul class="two-col">
    <?php
            $temp = $wp_query;
            $wp_query= null;
            $wp_query = new WP_Query();
            $wp_query->query(\'showposts=4\'.\'&paged=\'.$paged);

    ?>

    <?php $posts = get_posts(\'numberposts=4&offset=1\'); foreach ($posts as $post) : start_wp(); ?>
    <?php static $count2 = 0; if ($count2 == "4") { break; } else { ?>
             <li>
                        <!-- post stuff -->
    </li>
    <?php $count2++; } ?>
    <?php endforeach; ?>
    </ul> <!-- close two-col -->
    <?php $wp_query = null; $wp_query = $temp;?>

    <!-- Third Loop -->
    <ul class="three-col">

    <?php
            $temp = $wp_query;
            $wp_query= null;
            $wp_query = new WP_Query();
            $wp_query->query(\'showposts=6\'.\'&paged=\'.$paged);

        ?>
    <?php $posts = get_posts(\'numberposts=6&offset=5\'); foreach ($posts as $post) : start_wp(); ?>
    <?php static $count3 = 0; if ($count3 == "6") { break; } else { ?>

    <li>

                        <!-- post stuff -->

    </li>

    <?php $count3++; } ?>
    <?php endforeach; ?>
    </ul> <!-- close three-col -->

    <?php $wp_query = null; $wp_query = $temp;?>

    <!-- End All Looping -->

1 个回复
SO网友:Stephen Harris

内容是相同的,因为循环是get_posts() 不考虑您所在页面的呼叫。简而言之,您没有循环查看WP_Query 但相反get_posts() . 尝试替换get_posts 以及foreach 使用while 循环使用的结果WP_Query .

每个循环应采用以下形式:

$wp_query = new WP_Query($args);

while ($wp_query->have_posts() ) : $wp_query->the_post();
//display contents here
endwhile;
为了你的目的,$args 会是\'showposts=4\'.\'&paged=\'.$paged 哪里$paged 是您所在的页面。

如果你只是想输出你的帖子,第一个1用一种方式,第二个5用另一种方式,等等。最好只有一个循环,但在里面使用一些If语句来适当设置帖子的格式。

(注意,如果您试图在一个页面上有多个循环,所有循环都要分页:不费一点力气,这是行不通的。因为只有一个循环$paged 所有循环的变量。)

结束

相关推荐

Pagination on custom taxonomy

我很难做到这一点。这不是我第一次遇到分页问题,或者说是WPs URL系统的问题。基本上我有这个URL:http://example.com/location/dc 并加载taxonomy-location.php 样板现在,我将为主题添加分页功能。所以我有一个URL:http://example.com/location/dc/page/2 它不会加载taxonomy-location.php 模板,它实际上加载404 样板这是调试栏显示的内容:看起来它得到了正确的值,WP只是没有加