category.php上的分页在wordpress中不起作用

时间:2015-01-25 10:08:54

标签: wordpress pagination http-status-code-404 permalinks

我使用自定义永久链接/%category%/%postname%/ 在类别页面(category.php)上我使用分页,例如/ shops / paged / 2并获得404错误

P.S。如果我去/ shops / paged / 1它可以工作 P.P.S使用自定义查询WP_Query和wp_pagenavi()

global $paged;
if (get_query_var( 'paged' ))
    $my_page = get_query_var( 'paged' );
else {
    if( get_query_var( 'page' ) )
        $my_page = get_query_var( 'page' );
    else
        $my_page = 1;
    set_query_var( 'paged', $my_page );
    $paged = $my_page;
}
$args = array(array('posts_per_page'   => 2, 'paged'            => $paged, 'post_type' => 'post', 'category_name'    => 'my_category_nicename'));

$the_query = new WP_Query( $args );

...

while ( $the_query->have_posts() ):

...

我该如何解决?

非常感谢!!

1 个答案:

答案 0 :(得分:6)

您需要修改类别页面上的主循环,而不是打破新循环。您所在类别的主循环没有页面2,因此它永远不会显示您修改的category.php文件,而是加载了404模板。

在下面的示例中,我使用pre_get_posts检查我们是否在某个类别页面上,并将每页的帖子数更改为2.

function wpse_modify_category_query( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {
        if ( $query->is_category() ) {
            $query->set( 'posts_per_page', 2 );
        } 
    } 
}
add_action( 'pre_get_posts', 'wpse_modify_category_query' );