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

如何在WooCommerce商品归档页自定义显示指定商品属性?

解决WooCommerce商店页面显示指定商品属性的问题

我懂你的困扰——你现在的代码应该是在逐个定义属性变量后,输出逻辑只处理了最后一个,所以才只会显示最后一个属性的名称。咱们可以优化代码,让它能批量处理你想展示的属性,同时清晰显示属性名称和对应值:

修正后的代码

add_action('woocommerce_after_shop_loop_item','add_attribute');
function add_attribute() {
    global $product;
    
    // 定义你想要显示的属性slug列表(和后台属性的别名一致)
    $target_attributes = ['weight', 'quantity'];
    
    // 遍历属性列表,逐个输出名称和值
    foreach ($target_attributes as $attr_slug) {
        $attr_name = $product->get_attribute_label($attr_slug); // 获取属性的友好名称(比如后台设置的"重量"而不是"weight")
        $attr_value = $product->get_attribute($attr_slug); // 获取属性值
        
        // 只有当属性值不为空时才输出,避免显示空内容
        if (!empty($attr_value)) {
            echo '<div class="product-attribute">';
            echo '<span class="attr-name">' . esc_html($attr_name) . ':</span>';
            echo '<span class="attr-value">' . esc_html($attr_value) . '</span>';
            echo '</div>';
        }
    }
}

关键说明

  • 属性slug匹配:$target_attributes里的slug必须和你WooCommerce后台设置的属性别名完全一致(一般是小写,不含空格),比如后台属性叫"商品数量",slug可能是quantity。
  • 友好名称获取:get_attribute_label()方法会返回你在后台设置的属性显示名称,而不是生硬的slug,让前端显示更友好。
  • 空值过滤:添加!empty($attr_value)判断,避免某个商品没有该属性时显示空的属性行。
  • 样式扩展:代码里加了product-attribute、attr-name、attr-value这些类名,你可以通过CSS自定义这些元素的样式,比如调整字体、间距等。

额外优化建议

如果之后需要添加更多属性,只需要在$target_attributes数组里新增对应的slug即可,不用重复写变量和输出逻辑,扩展性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:14:01