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

如何解决WooCommerce商品归档页修改分页基础slug不生效问题

问题原因
  • WooCommerce的商品归档(即商店页)属于自定义文章类型归档,它的重写规则由WooCommerce单独注册,优先级高于WordPress全局的pagination_base配置,所以你直接修改全局分页基址的代码只会对原生文章分页生效,无法覆盖WooCommerce商店页的规则。
修复方案

你需要额外添加WooCommerce专属的重写规则和链接修正逻辑,完整可用代码如下:

// 修改全局分页基址(保留你原有逻辑)
function custom_global_pagination_base() {
    global $wp_rewrite;
    $wp_rewrite->pagination_base = 'strana';
}
add_action('init', 'custom_global_pagination_base');

// 新增WooCommerce商店页分页重写规则
function custom_woo_pagination_rewrite_rules($rules) {
    $shop_page_id = wc_get_page_id('shop');
    $shop_page = get_post($shop_page_id);
    if ($shop_page && $shop_page->post_name) {
        $shop_slug = $shop_page->post_name;
        $new_rules = array(
            $shop_slug . '/strana/([0-9]+)/?$' => 'index.php?pagename=' . $shop_slug . '&paged=$matches[1]',
            $shop_slug . '/strana/([0-9]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?pagename=' . $shop_slug . '&paged=$matches[1]&feed=$matches[2]'
        );
        // 新规则插在原有规则前保证优先级
        $rules = $new_rules + $rules;
    }
    return $rules;
}
add_filter('rewrite_rules_array', 'custom_woo_pagination_rewrite_rules');

// 修正前端输出的WooCommerce分页链接结构
function custom_woo_pagination_link($link) {
    if (is_shop() || is_product_category() || is_product_tag()) {
        $link = str_replace('/page/', '/strana/', $link);
    }
    return $link;
}
add_filter('paginate_links', 'custom_woo_pagination_link');
生效操作

将上述代码添加到你主题的functions.php文件或者自定义功能插件中后,执行任意一项操作即可生效:

  • 进入WordPress后台→设置→固定链接,直接点击「保存更改」,无需修改任何参数
  • 单次调用flush_rewrite_rules()刷新规则(不要把这段代码常驻,仅执行一次即可,避免性能损耗)

该方案同时兼容商店页、商品分类页、商品标签页的分页slug修改,不会影响原生文章、页面的分页规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:18:05