You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用WP_Query实现WordPress分页时遭遇404错误求助

WordPress自定义文章类型articles分页404问题解决方法

问题现象

使用WP_Query查询自定义文章类型articles,设置每页3篇已发布文章,分页链接显示正常(如「1 2 3 4 next »」),但点击http://www.mysite.com/blog/page/2这类分页链接时出现404错误,站点博客页地址为http://www.mysite.com/blog/。

常见原因及解决方案

原因1:静态页面分页误用paged变量

如果/blog/是静态页面(Page),WordPress对静态页面的分页使用page变量,而非博客首页用的paged变量,原代码错误使用paged导致分页逻辑失效。

修正代码:
将原代码中获取分页变量的部分修改为:

$paged = (get_query_var('page')) ? get_query_var('page') : 1;

同时更新分页链接中的当前页参数:

$current_page = max(1, $paged);

原因2:未添加对应重写规则

WordPress默认重写规则不识别静态页面+自定义文章类型的分页结构,需手动添加规则。

步骤:

  1. 在主题的functions.php文件中添加以下代码:
function add_articles_pagination_rewrite() {
    add_rewrite_rule(
        '^blog/page/([0-9]+)/?$',
        'index.php?pagename=blog&page=$matches[1]',
        'top'
    );
}
add_action('init', 'add_articles_pagination_rewrite');
  1. 登录WordPress后台,进入「设置」→「固定链接」,直接点击「保存更改」刷新重写规则。

原因3:未修改主查询(推荐方案)

直接使用自定义WP_Query时,WordPress主查询仍默认查询普通文章类型,分页时因无对应内容返回404。修改主查询让博客页直接查询articles类型,是最稳定的解决方案。

步骤:

  1. 在主题的functions.php文件中添加以下代码(根据/blog/是首页还是静态页面调整判断条件):
function custom_blog_main_query($query) {
    // 如果/blog/是静态页面用is_page('blog'),是博客首页用is_home()
    if (!is_admin() && $query->is_main_query() && is_page('blog')) {
        $query->set('post_type', 'articles');
        $query->set('posts_per_page', 3);
    }
}
add_action('pre_get_posts', 'custom_blog_main_query');
  1. 页面模板中使用主循环,删除自定义WP_Query代码,简化为:
<?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
        <h3><?php the_title(); ?></h3>
    <?php endwhile; ?>

    <div class="pagination">
        <?php
        $total_pages = $GLOBALS['wp_query']->max_num_pages;
        if ($total_pages > 1) {
            $current_page = max(1, get_query_var('page')); // 静态页面用page,首页用paged
            echo paginate_links(array(
                'current' => $current_page,
                'total' => $total_pages,
                'prev_text'    => __('« prev'),
                'next_text'    => __('next »'),
            ));
        }
        ?>
    </div>
<?php endif; ?>

内容的提问来源于stack exchange,提问作者vimuth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:25:29