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

如何在WooCommerce中移除URL参数里的berocket_brand前缀?

解决WooCommerce中Berocket品牌筛选URL参数替换问题

核心思路

要实现将URL中filters参数内的berocket_brand替换为brand,需要同时处理前端链接生成和后端参数兼容/重定向两个环节——既要让新生成的链接使用brand参数,也要确保旧链接能正常跳转且筛选功能不受影响。


1. 修改前端筛选链接的参数名

Berocket筛选插件提供了berocket_query_vars钩子,可直接修改生成的查询参数名。将以下代码添加到主题的functions.php文件或自定义插件中:

add_filter('berocket_query_vars', 'replace_berocket_brand_param', 10, 1);
function replace_berocket_brand_param($query_vars) {
    // 检测并替换参数名
    if (isset($query_vars['berocket_brand'])) {
        $query_vars['brand'] = $query_vars['berocket_brand'];
        unset($query_vars['berocket_brand']);
    }
    return $query_vars;
}

这段代码会在Berocket生成筛选链接时,自动将berocket_brand替换为brand,确保新生成的URL符合需求。

2. 兼容旧URL并实现重定向

为了避免用户收藏的旧链接失效,同时保证SEO友好,需要添加重定向逻辑,并让后端能识别新参数:

add_action('parse_request', 'handle_berocket_brand_redirect');
function handle_berocket_brand_redirect($wp) {
    // 处理旧链接重定向
    if (isset($_GET['filters']) && strpos($_GET['filters'], 'berocket_brand') !== false) {
        $new_filters = str_replace('berocket_brand', 'brand', $_GET['filters']);
        $new_url = add_query_arg('filters', $new_filters, remove_query_arg('filters'));
        // 301永久重定向,传递原有查询参数
        wp_redirect($new_url, 301);
        exit;
    }

    // 将新参数映射回插件识别的原参数,确保筛选功能正常
    if (isset($_GET['filters']) && strpos($_GET['filters'], 'brand') !== false) {
        $compatible_filters = str_replace('brand', 'berocket_brand', $_GET['filters']);
        $_GET['filters'] = $compatible_filters;
        $_REQUEST['filters'] = $compatible_filters;
    }
}

这段代码的作用:

  • 当用户访问含berocket_brand的旧URL时,自动301重定向到含brand的新URL;
  • 将新的brand参数转换为Berocket插件原生识别的berocket_brand,确保筛选逻辑正常运行。

测试验证

  1. 点击前端Berocket品牌筛选按钮,检查生成的URL是否已替换为brand参数;
  2. 手动输入旧的berocket_brand链接,确认是否自动跳转到新链接;
  3. 测试品牌筛选功能,确保产品列表能正确展示对应品牌的商品。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:25:16