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

WordPress自定义查询分页出现404错误,求排查方案

问题排查与解决思路

1. 错误合并全局$wp_query参数

你的代码通过array_merge($wp_query->query, $args)合并了全局查询参数,但page.php对应的全局$wp_query是针对当前静态页面的查询(而非文章列表查询),其中的参数会和自定义文章列表查询冲突,导致WordPress路由规则无法识别分页请求,触发404。

修复方案:
直接定义独立的查询参数,不要合并全局$wp_query->query:

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

$args = array(
    'post_type' => array('post', 'event', 'project'),
    'posts_per_page' => 8,
    'paged' => $paged
);

$mainfeed_query = new WP_Query($args);

2. 静态页面与文章列表的分页参数混淆

WordPress静态页面(page模板)默认使用page查询变量,而文章列表分页用paged。如果分页链接生成时未处理这个差异,会导致参数不被系统识别。

修复方案:
修改$paged的获取逻辑,兼容两种参数;同时在分页链接中强制指定参数格式:

// 兼容page和paged参数
$paged = (get_query_var('paged')) ? get_query_var('paged') : (get_query_var('page') ? get_query_var('page') : 1);

// 生成分页链接时指定格式
echo paginate_links(array(
    'total' => $mainfeed_query->max_num_pages,
    'current' => $paged,
    'prev_text' => __('« Previous'),
    'next_text' => __('Next »'),
    'format' => '?paged=%#%' // 强制使用paged参数
));

3. 自定义文章类型重写规则未刷新

如果event、project这类自定义文章类型是通过ACF创建的,可能未正确生成重写规则,导致分页请求无法匹配路由。

修复方案:
进入WordPress后台 → 设置 → 固定链接,直接点击「保存更改」(无需修改任何设置),强制刷新WordPress的重写规则,确保自定义文章类型的分页路由生效。

额外验证点

  • 确认posts_per_page设置的值小于总文章数,否则分页链接不会生成,也可能引发异常
  • 临时禁用SEO、缓存类插件,排查是否有插件干扰路由规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 22:13:18