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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:43:12