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

WordPress新闻分类分页第二页URL正常但页面空白问题求助

问题根因

  • 分页current参数取值错误:paginate_links配置中的current参数直接调用get_query_var('paged'),如果代码运行在自定义页面模板、静态首页等场景,主查询不会携带自定义查询的分页参数,导致第二页查询时current值异常,查询偏移错误返回空
  • 分页格式与固定链接冲突:format参数写死为?paged=%#%,开启固定链接的站点会出现参数传递失效,无法正确读取第二页的分页值
  • 全局变量声明顺序错误:global $wp_query声明在变量赋值之后,导致paginate_links读取到的仍然是默认主查询,而非你创建的自定义查询
  • 冗余逻辑干扰:原有代码中的$i计数逻辑完全无效,不影响运行但属于冗余代码可以直接删除

修复后的完整代码

<?php
// 先声明全局变量
global $wp_query;

// 正确获取分页参数
if ( get_query_var('paged') ) {
    $paged = get_query_var('paged');
} elseif ( get_query_var('page') ) { 
    $paged = get_query_var('page');
} else {
    $paged = 1;
}

$cquery = new WP_Query(array(
  'post_type' => 'news',
  'paged' => $paged,
  'posts_per_page' => 5
));

if ($cquery->have_posts () ) :
    while ($cquery->have_posts () ) :
        $cquery->the_post();
?>
<!-- 你的文章输出代码放在这里 -->
<?php 
    endwhile; 
endif;
?>

<?php if ($cquery->max_num_pages > 1) :   
    $orig_query = $wp_query; 
    $wp_query = $cquery;
    $big = 999999999;
?>
<ul class="pagination">
  <li>
   <?php
     echo paginate_links( array(
         'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
         // 自动适配固定链接和默认链接格式
         'format' => get_option('permalink_structure') ? 'page/%#%/' : '?paged=%#%',
         // 直接用前面已经获取到的$paged变量,避免重新读取query_var出错
         'current' => max( 1, $paged ),
         'total' => $cquery->max_num_pages,
         'prev_text' => __('« Previous'),
         'next_text' => __('Next »'),
     ) );
     $wp_query = $orig_query; 
   ?>
  </li>
</ul>
<?php endif; 
wp_reset_postdata(); 
?>

修复完成后进入后台「设置→固定链接」,直接点击保存按钮刷新重写规则,清空站点缓存后再测试分页即可。


更优方案(彻底避免自定义查询分页冲突)

如果你的代码是放在news自定义文章类型的归档模板archive-news.php中,不需要自定义WP_Query,直接通过钩子修改主查询即可,分页逻辑完全不需要额外处理:

  1. 将以下代码添加到主题functions.php文件中
add_action('pre_get_posts', function($query) {
    // 仅修改前台news自定义文章类型的主查询,不影响后台和其他页面
    if (!is_admin() && $query->is_main_query() && is_post_type_archive('news')) {
        $query->set('posts_per_page', 5);
    }
});
  1. archive-news.php直接使用默认主循环和默认分页函数即可,完全不会出现分页异常问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 12:06:07