每页自定义帖子不支持分页

时间:2012-08-23 作者:Imran

我的模板中有一个页面,我想在其中设置自定义posts\\u per\\u页面。以下是我使用的代码:

<?php
global $query_string;
query_posts($query_string . \'&posts_per_page=4\'); 
if ( have_posts() ) : while ( have_posts() ) : the_post();
...
现在,这段代码限制每页只有4个项目,并在下面显示pageinate\\u链接,正如我所写的那样。然而,点击任何其他页面将导致404。

如果我去掉global和query\\u posts行,那么它可以正常工作。

这是我正在使用的paginate\\u links函数:

echo paginate_links( array(
    \'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) ),
    \'format\' => \'?paged=%#%\',
    \'current\' => max( 1, get_query_var(\'paged\') ),
    \'total\' => $wp_query->max_num_pages,
    \'prev_text\' => \'Previous\',
    \'next_text\' => \'Next\',  
) );

2 个回复
最合适的回答,由SO网友:Milo 整理而成

使用pre_get_posts 在您的functions.php 具有conditional tags, 并取消对的呼叫query_posts:

function wpa62751_pre_get_posts( $query ) {
    if ( is_category( \'my-category\' ) && is_main_query() )
        $query->set( \'posts_per_page\', 4 );
}
add_action( \'pre_get_posts\', \'wpa62751_pre_get_posts\' );

SO网友:amit

Note - 推荐的方法由@Milo指出,使用pre_get_post 总是一个不错的选择query_posts

但是,您可以通过传递paged 参数

Example -

global $wp_query;
$args = array_merge( 
                $wp_query->query, // old query
                array( 
                    \'posts_per_page\' => 4,
                    \'paged\' => get_query_var(\'paged\')
                    //  \'paged\' => get_query_var(\'page\')
                ) 
        );  
query_posts( $args );

结束

相关推荐

Pagination on 2nd loop

好的,我正在创建一个业务列表网站,该网站使用列表“类型”的自定义分类法。我需要在分类法归档页面上显示两个循环,一个用于“赞助”列表,另一个用于常规列表。分类法存档:http://pastie.org/3187162分页功能:http://pastie.org/3187168这两部分都在做我想做的事情,但有一个问题:在一个特定类别中大约有50个非赞助商列表,但第二个查询最多有5个“页面”(即,如果我将posts\\u per\\u page设置为5,则有25个列表,如果我将posts\\u per\\u p