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

WordPress自定义文章类型分页链接(get_next_posts_link等)失效求助

排查自定义文章类型分页链接失效的问题

嘿,我来帮你一步步排查这个分页链接总是指向当前页的问题~

1. 自定义文章类型(CPT)的注册参数可能有问题

你提到设置了“不允许文章单独可见”,大概率是把publicly_queryable设为false了?但这个参数会直接影响WordPress为该CPT生成的重写规则——如果完全关闭了publicly_queryable,系统不会生成对应的分页URL规则,哪怕你在页面里做自定义查询,分页函数也没法生成正确的page/2这类链接。

如果要禁止单篇CPT文章访问,更稳妥的方式是:

  • 保持publicly_queryable为true
  • 通过钩子拦截单页访问,比如在主题的functions.php里加:
    add_action('template_redirect', function() {
        if (is_singular('your-cpt-slug')) {
            wp_redirect(home_url(), 301);
            exit;
        }
    });
    

另外,注册CPT时一定要配置rewrite参数,比如:

'rewrite' => array('slug' => 'your-cpt-slug', 'with_front' => false)

配置后记得去后台「设置-固定链接」页面重新保存一次,刷新重写规则。

2. 自定义查询的paged参数没正确传递

你的自定义WP_Query必须明确指定paged参数,否则查询永远只会返回第一页内容,分页函数自然不会生成有效链接。正确的写法应该是:

// 获取当前分页号,默认是1
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
// 如果是静态首页,换成get_query_var('page')
// $paged = get_query_var('page') ? get_query_var('page') : 1;

$custom_args = array(
    'post_type' => 'your-cpt-slug',
    'posts_per_page' => 6, // 每页显示数量
    'paged' => $paged // 关键:传递分页参数
);
$custom_query = new WP_Query($custom_args);

3. 分页函数没有绑定自定义查询对象

get_next_posts_link()和get_previous_posts_link()默认是基于**主查询($wp_query)**的参数生成链接的,而主查询当前是页面本身的查询(只有1页),所以会一直指向当前页。

你需要把自定义查询的max_num_pages传给分页函数的第二个参数,告诉它总共有多少页:

// 输出下一页链接
if ($custom_query->have_posts()) {
    echo get_next_posts_link('查看更多', $custom_query->max_num_pages);
}
// 输出上一页链接
echo get_previous_posts_link('返回上页');

4. 最后检查重写规则

如果上面的配置都没问题,还是没效果,去后台「设置-固定链接」页面,不用修改任何设置,直接点击「保存更改」——这会强制WordPress刷新所有重写规则,很多分页问题都是因为规则没更新导致的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:05:52