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

WordPress CPT分页第1、2页正常 第3页及以后报404错误如何解决

问题核心原因

  • WordPress的404判断逻辑执行在模板渲染之前:请求进入后会先运行全局主查询,若主查询判断当前分页没有内容,会直接返回404,不会加载你写了自定义查询的index.php模板,你在模板内替换全局$wp_query的操作无法影响前置的404判断。
  • 全局主查询默认仅查询原生post类型,分页阈值参考后台「设置-阅读」的每页文章数,计算出的总页数远小于你多CPT自定义查询的总页数,所以超过主查询最大页数的分页就会触发404。两台设备的原生文章数量不同,主查询算出的最大页数不同,因此报错的分页阈值不一致。

最优解决方案(推荐)

不要在模板中新建自定义WP_Query,使用pre_get_posts钩子直接修改首页主查询的规则,从根源匹配查询逻辑:

  1. 替换index.php中的现有自定义查询代码为默认循环:
<?php
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        get_template_part('template/default-content-thumbnail', get_post_type());
    }
    echo paginate_links();
}
?>
  1. 在当前主题的functions.php文件中添加钩子代码:
<?php
add_action( 'pre_get_posts', 'custom_home_query' );
function custom_home_query( $query ) {
    // 仅修改前台首页的主查询,不影响后台、其他页面的查询逻辑
    if ( $query->is_home() && $query->is_main_query() && ! is_admin() ) {
        $query->set( 'post_type', array('post', 'ljm_utstallningar', 'ljm_event', 'ljm_arkiv', 'ljm_bildarkiv', 'ljm_film', 'ljm_pag') );
        $query->set( 'posts_per_page', 5 );
    }
}
?>

兜底兼容方案(仅特殊场景使用)

如果必须保留模板内的自定义查询逻辑,可以在functions.php中添加代码手动拦截404判断:

<?php
add_action( 'template_redirect', 'fix_custom_pagination_404' );
function fix_custom_pagination_404() {
    if ( is_home() && get_query_var('paged') > 1 ) {
        global $wp_query;
        // 动态计算所有符合条件的文章总页数
        $total_posts = get_posts( array(
            'post_type' => array('post', 'ljm_utstallningar', 'ljm_event', 'ljm_arkiv', 'ljm_bildarkiv', 'ljm_film', 'ljm_pag'),
            'post_status' => 'publish',
            'numberposts' => -1,
            'fields' => 'ids'
        ) );
        $max_page = ceil( count($total_posts) / 5 );
        // 若当前分页在自定义查询的总页数范围内,取消404状态
        if ( get_query_var('paged') <= $max_page ) {
            $wp_query->is_404 = false;
            $wp_query->is_home = true;
            status_header(200);
        }
    }
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:39:05