WooCommerce按产品分类条件显示多个自定义标签求助
实现WooCommerce按产品分类显示多个自定义标签
我不太精通PHP,但能简单修改代码。我的WooCommerce站点有数千款产品,按多个品牌划分(品牌来自Perfect Brands WooCommerce插件,同时也把品牌设为产品分类复用)。之前找到代码修改后,只能按分类显示单个自定义标签,现在需要实现按分类显示多个标签,不同分类对应不同的多标签组合。
以下是修改后的代码,可满足多标签需求:
// 按分类显示多个自定义品牌标签 add_filter( 'woocommerce_product_tabs', 'custom_multi_brand_tabs' ); function custom_multi_brand_tabs( $tabs ) { // 定义分类与对应多标签的映射关系,方便后续维护 $category_tabs_map = array( 'bisley-workwear' => array( array( 'id' => 'bisley-brand-info', 'title' => __( 'Bisley品牌介绍', 'woocommerce' ), 'priority' => 50, 'content' => '这是Bisley Workwear的品牌介绍内容' ), array( 'id' => 'bisley-size-guide', 'title' => __( 'Bisley尺码指南', 'woocommerce' ), 'priority' => 55, 'content' => do_shortcode('[shortcode-for-size-guide]') ) ), 'as-colour' => array( array( 'id' => 'as-colour-story', 'title' => __( 'AS Colour品牌故事', 'woocommerce' ), 'priority' => 50, 'content' => 'AS Colour的品牌故事内容' ), array( 'id' => 'as-colour-care', 'title' => __( 'AS Colour洗护说明', 'woocommerce' ), 'priority' => 55, 'content' => 'AS Colour产品的洗护注意事项' ) ), 'syzmik-workwear' => array( array( 'id' => 'syzmik-product-range', 'title' => __( 'Syzmik产品系列', 'woocommerce' ), 'priority' => 50, 'content' => 'Syzmik Workwear的全系列产品介绍' ) ) ); // 遍历映射关系,为当前产品所属分类添加对应标签 foreach ( $category_tabs_map as $category_slug => $tabs_list ) { if ( has_term( $category_slug, 'product_cat' ) ) { foreach ( $tabs_list as $tab ) { $tabs[$tab['id']] = array( 'title' => $tab['title'], 'priority' => $tab['priority'], 'callback' => function() use ( $tab ) { echo $tab['content']; } ); } } } return $tabs; }
代码说明:
- 用
$category_tabs_map数组统一管理分类slug和对应的多标签配置,后续新增/修改分类或标签时,直接修改这个数组即可,无需改动逻辑代码,更易维护。 - 每个标签可独立设置
id(唯一标识,不能重复)、title(标签名称)、priority(标签显示顺序,数值越小越靠前)、content(标签内容,支持短代码)。 - 通过匿名函数直接传递标签内容,避免了原代码中重复的
has_term判断,逻辑更简洁。 - 如果产品属于多个分类,会自动加载所有对应分类的标签(若需仅加载第一个匹配分类的标签,可在找到匹配项后添加
break跳出循环)。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

