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

修改WordPress分页URL为瑞典语后店铺页面无产品显示求助

问题描述

我搭建了瑞典语的WordPress/WooCommerce站点,遇到URL语言不一致的问题:所有页面标题都是瑞典语,但产品分类分页时,链接里的分页标识是英文的page而非瑞典语的sida(期望URL:https://mydomain/categori/sida/2/,实际显示https://mydomain/categori/page/2/)。

我尝试了以下代码修复:

function re_rewrite_rules() {
    global $wp_rewrite;
    
    $wp_rewrite->pagination_base    = 'sida';
    if ( ! get_option('my_re_rewrite_rules_flushed', false) ) {
        $wp_rewrite->flush_rules();
        update_option( 'my_re_rewrite_rules_flushed', time());
    }
    
}
add_action('init', 're_rewrite_rules');

这段代码解决了分类页面的问题,但店铺页面(URL:https://mydomain/butik/)点击分页后,URL变成https://mydomain/butik/sida/2,页面只保留框架元素,没有产品内容。请问该怎么修改代码?

解决方案

问题核心是:你修改了WordPress全局的pagination_base,但WooCommerce的店铺页面(产品归档页)有独立的重写规则和查询逻辑,没有同步适配新的sida分页标识,导致WordPress无法正确识别分页参数,进而无法加载产品数据。

可以用以下两种方式修复:

方法一:全局替换+适配WooCommerce查询

这种方法保持全局分页基址为sida,同时修复WooCommerce店铺页面的参数解析:

// 设置全局分页基址为瑞典语"sida"
function set_custom_pagination_base() {
    global $wp_rewrite;
    $wp_rewrite->pagination_base = 'sida';
}
add_action('init', 'set_custom_pagination_base');

// 修复WooCommerce店铺页面的分页参数映射
function fix_shop_pagination_query($query) {
    if ( ! is_admin() && $query->is_main_query() && is_shop() ) {
        // 把URL中的"sida"参数映射到WordPress的"paged"查询参数
        if ( isset($query->query_vars['sida']) && is_numeric($query->query_vars['sida']) ) {
            $query->set('paged', $query->query_vars['sida']);
            unset($query->query_vars['sida']);
        }
    }
}
add_action('pre_get_posts', 'fix_shop_pagination_query');

// 仅首次加载时刷新重写规则,避免重复执行
function flush_rewrite_once() {
    if ( ! get_option('custom_pagination_flushed', false) ) {
        global $wp_rewrite;
        $wp_rewrite->flush_rules();
        update_option('custom_pagination_flushed', time());
    }
}
add_action('admin_init', 'flush_rewrite_once');

方法二:单独适配WooCommerce分页链接

如果不想修改全局分页规则,也可以只针对WooCommerce的分页链接替换标识,同时确保重写规则同步:

// 修改WooCommerce分页链接的格式和基址
function custom_wc_pagination_args($args) {
    $args['base'] = str_replace('page/', 'sida/', $args['base']);
    $args['format'] = 'sida/%#%/';
    return $args;
}
add_filter('woocommerce_pagination_args', 'custom_wc_pagination_args');

// 首次加载时刷新重写规则
function flush_wc_rewrite_rules() {
    if ( ! get_option('wc_pagination_flushed', false) ) {
        flush_rewrite_rules();
        update_option('wc_pagination_flushed', time());
    }
}
add_action('init', 'flush_wc_rewrite_rules');

操作注意事项

  • 将代码添加到主题的functions.php或自定义代码插件中。
  • 后台进入设置→固定链接,直接点击「保存更改」,手动刷新重写规则(这一步很关键,确保新规则生效)。
  • 测试店铺分页链接,确认URL显示/butik/sida/2/且产品正常加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:57:35