使用分页的多个WP_QUERY循环

时间:2012-03-29 作者:Cory

关于这一点,还有一些其他问题(对于很多人来说,WP\\u查询分页似乎是一个巨大的问题),因此我正试图缩小如何使其发挥作用的范围。

我可以使用以下代码创建一个分页的自定义循环:

// http://weblogtoolscollection.com/archives/2008/04/19/paging-and-custom-wordpress-loops/
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$args = array(
    \'showposts\' => 2,
    \'paged\' => $paged
);
$wp_query->query($args);
while ($wp_query->have_posts()) : $wp_query->the_post();

// The Post
the_title();
echo \'<br>\';
the_category(\' \');
the_excerpt();
echo \'<hr>\';

endwhile;
// http://codex.wordpress.org/Function_Reference/paginate_links#Examples
$big = 999999999;
$pag_args = array(
    \'base\' => str_replace( $big, \'%#%\', get_pagenum_link( $big ) ),
    \'format\' => \'?paged=%#%\',
    \'current\' => max( 1, get_query_var(\'paged\') ),
    \'total\' => $wp_query->max_num_pages
);
echo paginate_links($pag_args);
$wp_query = null;
$wp_query = $temp;
。。。但很自然地,如果我复制/粘贴这个循环,它就像一个精确的克隆,这意味着,当你点击“第2页”时,两个循环都会进入第2页。

有没有一种方法可以将它们彼此分开,以便每个单独分页?

如果有人有兴趣设置自己的本地版本并玩弄它,下面是完整的代码,其中包含重复循环:http://paste.pocoo.org/show/573108/

1 个回复
最合适的回答,由SO网友:Boone Gorges 整理而成

是的,可以做到。关键是format 两个查询的参数不同:

    <!-- Cats -->
    <div class="animals">
        <?
            $paged1 = isset( $_GET[\'paged1\'] ) ? (int) $_GET[\'paged1\'] : 1;
            $paged2 = isset( $_GET[\'paged2\'] ) ? (int) $_GET[\'paged2\'] : 1;

            // Custom Loop with Pagination 1
            // http://codex.wordpress.org/Class_Reference/WP_Query#Usage
            $args1 = array(
                \'paged\'          => $paged1,
                \'posts_per_page\' => 2,
            );
            $query1 = new WP_Query( $args1 );

            while ( $query1->have_posts() ) : $query1->the_post();
                the_title();
                echo \'<br>\';
                the_category(\' \');
                the_excerpt();
                echo \'<hr>\';
            endwhile;

            // http://codex.wordpress.org/Class_Reference/WP_Query#Pagination_Parameters
            $pag_args1 = array(
                \'format\'  => \'?paged1=%#%\',
                \'current\' => $paged1,
                \'total\'   => $query1->max_num_pages,
                \'add_args\' => array( \'paged2\' => $paged2 )
            );
            echo paginate_links( $pag_args1 );
        ?>
    </div>

    <!-- Dogs -->
    <div class="animals">
        <?
            // Custom Loop with Pagination 2
            $args2 = array(
                \'paged\'          => $paged2,
                \'posts_per_page\' => 2,
            );
            $query2 = new WP_Query( $args2 );

            while ( $query2->have_posts() ) : $query2->the_post();
                the_title();
                echo \'<br>\';
                the_category(\' \');
                the_excerpt();
                echo \'<hr>\';
            endwhile;

            $pag_args2 = array(
                \'format\'  => \'?paged2=%#%\',
                \'current\' => $paged2,
                \'total\'   => $query2->max_num_pages,
                \'add_args\' => array( \'paged1\' => $paged1 )
            );
            echo paginate_links( $pag_args2 );
        ?>
    </div>

结束

相关推荐

使用GET_TEMPLATE_PART发布格式Single-loop.php

我已设置为使用标准之外的post格式库和视频。我正在编辑循环单。php为每个帖子格式提供不同的布局,但我要为每个帖子格式包含get\\u template\\u部分。这就是我所拥有的:<?php /** * The loop that displays a single post. * * The loop displays the posts and the post content. See * http://codex.wordpress.or