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

WordPress分页异常:page/3调用index模板且无内容

问题分析与解决方案

你的问题核心是第三页分页链接触发了404错误,导致WordPress fallback到index模板加载,同时错误的URL让自定义查询无法获取正确的分页参数,最终无内容显示。以下是具体修复步骤:

1. 修复分页链接的base参数

原代码中paginate_links的base参数手动拼接URL容易出错,改用WordPress标准占位符方式生成正确的分页链接结构:

echo paginate_links(array(
    'base'         => str_replace(999999999, '%#%', esc_url(get_pagenum_link(999999999))),
    'format'       => '/page/%#%',
    'current'      => $current_page,
    'total'        => $total_pages,
    'prev_text'    => __('« prev'),
    'next_text'    => __('next »'),
));

用999999999作为临时占位符,让WordPress自动替换为正确的分页格式,避免URL拼接错误。

2. 兼容paged和page参数

部分页面场景下WordPress会用page而非paged作为分页参数,修改参数获取逻辑兼容两种情况:

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

3. 刷新固定链接重写规则

登录WordPress后台,进入设置 → 固定链接,直接点击「保存更改」(无需修改设置),强制刷新重写规则,确保/page/%#%格式的分页链接能被正确解析。

4. 优化自定义查询规范

  • 添加ignore_sticky_posts参数避免置顶产品干扰分页计数
  • 改用WordPress标准循环写法替代直接遍历posts数组,减少全局变量冲突

完整修改后的代码

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

$category_id = "clothing"; 
$args = array(
    'post_type'        => 'product',
    'posts_per_page'   => 6, 
    'post_status'      => 'publish',
    'suppress_filters' => false,
    'paged'            => $paged,
    'ignore_sticky_posts' => true,
    'tax_query'        => array(
        array(
            'taxonomy' => 'product_cat',
            'terms'    => $category_id,
            'field'    => 'slug'
        ),
    ),
);

$products_query = new WP_Query($args);
$total_pages = $products_query->max_num_pages;

if($products_query->have_posts()){
    while($products_query->have_posts()){
        $products_query->the_post();
        $product = wc_get_product(get_the_ID());
        echo get_the_title();
        echo get_the_post_thumbnail();
        echo $product->get_price();
        echo get_the_permalink();
    }
} 

if ($total_pages > 1) :
    $current_page = max(1, $paged);

    echo paginate_links(array(
        'base'         => str_replace(999999999, '%#%', esc_url(get_pagenum_link(999999999))),
        'format'       => '/page/%#%',
        'current'      => $current_page,
        'total'        => $total_pages,
        'prev_text'    => __('« prev'),
        'next_text'    => __('next »'),
    ));
endif;
wp_reset_postdata(); 
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:39:16