You need to enable JavaScript to run this app. 如何在WooCommerce商品附加信息标签页展示默认变体属性
优惠活动
大模型
产品
解决方案
定价
更多

如何在WooCommerce商品附加信息标签页展示默认变体属性

实现方案

核心逻辑

和你之前编写的默认变体价格展示逻辑同源,通过WooCommerce内置的属性输出过滤器,拦截附加信息标签页的属性渲染流程,直接把全量可选属性值替换为对应属性的默认配置值,就能实现需求。

核心适配钩子

WooCommerce附加信息标签页的所有属性列表,统一通过woocommerce_get_product_attributes过滤器控制输出内容,该钩子接收2个参数:

  • $attributes:当前商品待渲染的全量属性数组
  • $product:当前商品实例对象

可直接复用的实现代码

将以下代码添加到当前主题的functions.php文件,或是自定义代码插件中即可生效:

add_filter('woocommerce_get_product_attributes', 'show_default_attr_in_additional_info_tab', 10, 2);
function show_default_attr_in_additional_info_tab( $attributes, $product ) {
    // 仅处理可变商品,其他类型商品直接返回原属性列表
    if ( ! $product->is_type('variable') ) {
        return $attributes;
    }

    // 读取商品后台设置的默认属性配置(和你之前价格逻辑读取的是同一份存储)
    $default_attrs = $product->get_default_attributes();
    if ( empty($default_attrs) ) {
        return $attributes;
    }

    // 遍历待渲染属性,匹配默认值并替换展示内容
    foreach ( $attributes as $attr_key => $attr_item ) {
        if ( isset( $default_attrs[ $attr_key ] ) ) {
            $default_val = $default_attrs[ $attr_key ];
            // 兼容全局分类法属性,将属性slug转成后台设置的可读名称
            if ( $attr_item->is_taxonomy ) {
                $term = get_term_by('slug', $default_val, $attr_key);
                if ( $term && ! is_wp_error($term) ) {
                    $default_val = $term->name;
                }
            }
            // 替换原属性的全量可选值为单独的默认值
            $attributes[ $attr_key ]->value = esc_html( $default_val );
        }
    }

    return $attributes;
}

小提示:相比你之前遍历所有可用变体匹配默认属性的逻辑,这里直接读取商品存储的默认属性配置,不需要遍历变体列表,运行效率更高,也不会出现变体匹配偏差的问题。

效果校验

  • 代码生效后,只要是在商品后台设置过默认值的属性,都会在附加信息标签页单独展示对应的默认值,完全匹配举例场景:color属性设默认red时,属性行只会输出“颜色:Red”,不会罗列其他可选值。
  • 未设置默认值的属性,会保留原有全量可选值的展示逻辑,不会出现内容丢失。
  • 针对后台注册的全局分类法属性,自动完成slug到可读名称的转译,不会出现显示属性英文标识的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 15:36:04