如何在Elementor Loop Grid中获取品牌分类slug构建自定义店铺URL
解决Elementor Loop Grid品牌Logo链接到带Search and Filter筛选的店铺页问题
核心需求拆解
要把品牌Logo的默认品牌页链接,替换为带Search and Filter Pro品牌筛选参数的店铺页,关键是获取当前品牌的slug,再拼接成目标URL。
具体实现方案
方案1:自定义短代码+Elementor动态解析
添加短代码获取品牌slug
打开主题(或子主题)的functions.php文件,插入以下代码:function get_woocommerce_brand_slug() { global $post; // 适配Woocommerce Brands默认的自定义分类法slug,若你的分类法slug不同请修改 $brands = wp_get_post_terms($post->ID, 'product_brand', array('fields' => 'all')); if (!empty($brands)) { return $brands[0]->slug; } return ''; } add_shortcode('brand_slug', 'get_woocommerce_brand_slug');在Elementor中配置自定义链接
- 编辑Loop Grid小部件,找到品牌Logo的链接设置,选择「自定义URL」
- 在URL输入框填入:
/shop?_sft_product_brand=[brand_slug] - 确保Elementor开启了动态标签解析(默认已开启),保存后即可生效
方案2:自定义Elementor动态标签(更灵活)
注册自定义动态标签
在functions.php中插入以下代码:add_action('elementor/dynamic_tags/register', function($dynamic_tags) { class Brand_Filter_URL_Tag extends \Elementor\Core\DynamicTags\Tag { public function get_name() { return 'brand-filter-url'; } public function get_title() { return '品牌筛选店铺URL'; } public function get_group() { return 'custom'; } public function get_categories() { return array(\Elementor\Modules\DynamicTags\Module::URL_CATEGORY); } public function render() { global $post; $brands = wp_get_post_terms($post->ID, 'product_brand', array('fields' => 'all')); if (!empty($brands)) { $slug = $brands[0]->slug; echo esc_url(home_url("/shop?_sft_product_brand={$slug}")); } } } $dynamic_tags->register(new Brand_Filter_URL_Tag()); });使用自定义动态标签
- 编辑Loop Grid的Logo链接,点击「动态」按钮,选择「自定义」分类下的「品牌筛选店铺URL」
- 保存设置后,品牌Logo会自动指向带对应筛选参数的店铺页面
方案3:Search and Filter Pro内置功能(快速尝试)
部分版本的Search and Filter Pro支持直接生成品牌筛选URL,你可以进入WP后台「产品」->「品牌」,编辑单个品牌后查看是否有「筛选链接」类的字段,直接复制该链接到Elementor的Logo链接设置中即可。
注意事项
- 修改
functions.php前建议备份文件,优先使用子主题避免主题更新丢失代码 - 测试前清空网站缓存,确保动态内容正常加载
- 若你的Woocommerce Brands自定义分类法slug不是
product_brand,需将代码中的对应字段替换为实际slug
内容的提问来源于stack exchange,提问作者Valerie
相关产品推荐
相关产品推荐

