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

WooCommerce订单分页异常:跳转地址正确但内容重复

解决WooCommerce订单分页URL修改后内容重复问题

1. 先搞定Rewrite规则,让WordPress识别新的分页参数

你把URL改成了/orders/page/2,但WordPress默认认的是paged参数,得先加规则把page/数字转成查询能用的参数。在主题的functions.php里加这段代码:

function custom_orders_rewrite_rule() {
    add_rewrite_rule(
        '^my-account/orders/page/([0-9]+)/?$',
        'index.php?my-account=orders&paged=$matches[1]',
        'top'
    );
}
add_action('init', 'custom_orders_rewrite_rule');

加完必须去后台「设置→固定链接」页面,点一下保存按钮刷新规则,不然白加。

2. 让自定义订单查询正确读取当前页码

你之前写的自定义查询里,大概率没正确获取当前分页的数字。改成这样:

// 获取当前页码,默认是1
$current_page = get_query_var('paged', 1);
// 查询订单时带上分页参数
$customer_orders = wc_get_orders(array(
    'customer_id' => get_current_user_id(),
    'limit' => 10, // 这里的数字要和你每页想显示的订单数一致
    'paged' => $current_page,
    'paginate' => true, // 必须开分页功能
));

要是你用的是WC_Order_Query类,也要确保paged参数传对,paginate设为true。

3. 修正模板里的分页链接生成逻辑

在orders.php模板的分页代码里,要让链接生成和新URL匹配,比如用paginate_links的话这么写:

$pagination_args = array(
    'base' => trailingslashit(get_permalink(get_option('woocommerce_myaccount_page_id'))) . 'orders/page/%#%/',
    'format' => 'page/%#%/',
    'current' => max(1, get_query_var('paged')),
    'total' => $customer_orders->max_num_pages,
    'prev_text' => __('上一页', 'woocommerce'),
    'next_text' => __('下一页', 'woocommerce'),
);
echo paginate_links($pagination_args);

这里的base要严格对应你改后的URL结构,保证分页链接能指向正确地址。

4. 排查冲突

要是上面几步都没用,试试:

  • 禁用所有非WooCommerce的插件,看是不是插件抢了分页参数
  • 切换到WordPress默认主题(比如Twenty Twenty-Four),排查是不是主题代码干扰了查询

内容的提问来源于stack exchange,提问作者social.reza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:24:23