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

WordPress自定义文章类型分页异常:两页显示相同内容

WordPress自定义文章类型分页异常:两页显示相同内容

嗨,我来帮你排查这个问题~ 其实核心原因很简单:你的WP_Query查询里没加分页参数,WordPress根本不知道当前要加载第几页的内容,所以不管你点到第2页还是第3页,它都会默认返回第一页的10篇文章。

给你几个具体的修改步骤:

  • 首先获取当前的页码值:首页的时候get_query_var('paged')会返回0,所以我们要把它处理成1,代码是这样的:
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    
  • 把这个页码参数加到你的查询数组里,更新后的$args_rel应该是这样:
    $args_rel = array(
        'posts_per_page' => 10,
        'order' => 'DESC',
        'orderby' => 'ID',
        'post_type' => 'answer',
        'paged' => $paged // 新增的分页参数
    );
    
  • 还有个小细节:循环结束后记得重置查询,避免影响页面里的其他查询逻辑,代码是wp_reset_postdata();,放在循环外面的最后。

修改后的完整代码大概是这样:

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

$args_rel = array(
    'posts_per_page' => 10,
    'order' => 'DESC',
    'orderby' => 'ID',
    'post_type' => 'answer',
    'paged' => $paged
);

$wpex_query = new wp_query( $args_rel );
if ( $wpex_query->have_posts() ) { // 最好加个判断,避免没有文章时出错
    foreach( $wpex_query->posts as $post ){
        setup_postdata( $post );
        // 这里写你的文章内容输出逻辑,比如the_title()、the_content()之类的
    }
    wp_reset_postdata();
}

简单说下原理:paged参数是WP_Query识别当前分页的关键,没加的话它永远只会拉取第一页的数据;而wp_reset_postdata()是用来恢复全局的$post变量,防止自定义查询影响后续的默认查询(比如侧边栏的文章列表)。

备注:内容来源于stack exchange,提问作者Pavel Vainshtein

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:39:39