Wordpress category.php页面分页显示404页面

时间:2015-04-06 09:02:51

标签: php wordpress pagination

在category.php页面中,默认帖子会显示在某个具有分页的类别中,而且'类别'已从永久链接设置中删除网址。

不幸的是,它在分页到第二页的同时重定向到404页面。

我甚至试图在wordpress默认2015主题中检查类别分页,它也不会在那里工作。

这是我的category.php,只是用wordpress循环进行测试。

if ( have_posts() ) :
    while ( have_posts() ) : the_post();
        the_title(); 
    endwhile;
endif;

next_posts_link( 'Older posts' );
previous_posts_link( 'Newer posts' );

注意:如果未从网址中删除类别,则一切正常。

http://www.domain.com/category/my_category/page/2  (works)
http://www.domain.com/my_category/page/2  (doesnt work)

我是否需要添加/修改任何内容才能使其正常工作?

1 个答案:

答案 0 :(得分:3)

这是正常现象,请尝试使用以下代码:

add_filter( 'category_rewrite_rules', 'vipx_filter_category_rewrite_rules' );
function vipx_filter_category_rewrite_rules( $rules ) {
    $categories = get_categories( array( 'hide_empty' => false ) );

    if ( is_array( $categories ) && ! empty( $categories ) ) {
        $slugs = array();
        foreach ( $categories as $category ) {
            if ( is_object( $category ) && ! is_wp_error( $category ) ) {
                if ( 0 == $category->category_parent ) {
                    $slugs[] = $category->slug;
                } else {
                    $slugs[] = trim( get_category_parents( $category->term_id, false, '/', true ), '/' );
                }
            }
        }

        if ( ! empty( $slugs ) ) {
            $rules = array();

            foreach ( $slugs as $slug ) {
                $rules[ '(' . $slug . ')/feed/(feed|rdf|rss|rss2|atom)?/?$' ] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
                $rules[ '(' . $slug . ')/(feed|rdf|rss|rss2|atom)/?$' ] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
                $rules[ '(' . $slug . ')(/page/(\d+)/?)?$' ] = 'index.php?category_name=$matches[1]&paged=$matches[3]';
            }
        }
    }
    return $rules;
}

重要编辑:分页中存在错误,10 +页无法正常工作。
现在已修复:(\d)+已更改为(\d+)

希望这会有所帮助:)