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

WordPress新闻页分页功能无法加载问题求助

WordPress新闻页面分页组件不显示的修复方案

你的代码能正常获取文章,但分页组件无法加载,核心原因有两个:

  1. the_posts_pagination() 默认依赖全局的 $wp_query 对象,自定义 WP_Query 查询的数据它无法识别
  2. 代码未处理当前页码参数,WordPress无法判断是否需要触发分页

下面是两种可行的修复方法:

paginate_links() 支持传入自定义查询的分页数据,无需依赖全局对象。修改后的完整代码如下:

<div class="page-header" id="page-header=news">
    <h1>News</h1>
</div>

<?php
// 获取当前页码,静态首页场景改用get_query_var('page')
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args = array(
    'post_type' => 'post',
    'posts_per_page' => 10,
    'paged' => $paged, // 新增分页页码参数
);

$query = new WP_Query($args);

if ($query->have_posts()) :
    while ($query->have_posts()) :
        $query->the_post();
        get_template_part('template-parts/content', get_post_type());
    endwhile;
    ?>
    <div class="pagination">
        <?php
        echo paginate_links(array(
            'base'         => str_replace(999999999, '%#%', esc_url(get_pagenum_link(999999999))),
            'total'        => $query->max_num_pages, // 自定义查询的总页数
            'current'      => $paged, // 当前页码
            'prev_text'    => __('Previous page', 'mothertongues'),
            'next_text'    => __('Next page', 'mothertongues'),
            'mid_size'     => 1, // 当前页码两侧显示的页码数
            'end_size'     => 2, // 首尾显示的页码数
        ));
        ?>
    </div>
    <?php
    wp_reset_postdata();
else :
    get_template_part('template-parts/content', 'none');
endif;
?>

方法二:临时替换全局 $wp_query

如果你想继续使用 the_posts_pagination(),可以临时将全局查询替换为自定义查询,用完后恢复:

<div class="page-header" id="page-header=news">
    <h1>News</h1>
</div>

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

$args = array(
    'post_type' => 'post',
    'posts_per_page' => 10,
    'paged' => $paged,
);

$query = new WP_Query($args);

if ($query->have_posts()) :
    while ($query->have_posts()) :
        $query->the_post();
        get_template_part('template-parts/content', get_post_type());
    endwhile;
    ?>
    <div class="pagination">
        <?php
        // 临时保存全局查询对象
        $temp_wp_query = $wp_query;
        // 替换为自定义查询
        $wp_query = $query;
        
        the_posts_pagination(array(
            'next_text' => __('Next page', 'mothertongues'),
            'prev_text' => __('Previous page', 'mothertongues'),
        ));
        
        // 恢复全局查询对象
        $wp_query = $temp_wp_query;
        ?>
    </div>
    <?php
    wp_reset_postdata();
else :
    get_template_part('template-parts/content', 'none');
endif;
?>

注意事项

  • 确保文章总数超过 posts_per_page 设置的数量,否则分页组件不会显示
  • 如果新闻页面是静态首页(后台设置「首页显示」为静态页面),需将获取页码的代码改成:
    $paged = (get_query_var('page')) ? get_query_var('page') : 1;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 04:14:53