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

在WooCommerce中通过属性组别名和值获取属性标签的方法

解决方案

要将变体属性的slug转换为友好显示名称,你可以利用WordPress内置的术语查询函数,无需手动编写SQL。以下是具体实现步骤:

1. 自定义属性值标签获取函数

创建一个函数,接收属性组slug和属性值slug,返回对应的友好名称:

function get_attribute_value_label( $value_slug, $attribute_slug ) {
    // 验证属性分类法是否存在
    if ( ! taxonomy_exists( $attribute_slug ) ) {
        return $value_slug;
    }
    // 通过slug获取术语对象
    $term = get_term_by( 'slug', $value_slug, $attribute_slug );
    // 返回术语名称(不存在则返回原slug)
    return $term ? $term->name : $value_slug;
}

2. 修改原有循环逻辑

在你的变体循环中,替换原来直接使用$meta的逻辑,调用上述函数转换属性值:

foreach ($available_variations as $variation) { 
    $new_attributes = $variation['attributes'];
    $data_array = array();
    $allowed_attr = ['pa_color', 'pa_gauge', 'pa_size', 'pa_dimensions', 'pa_quantity', 'pa_length', 'pa_material'];
    
    foreach ( $new_attributes as $meta_key => $meta ) {
        // 仅处理允许的属性组
        if ( in_array( $meta_key, $allowed_attr ) ) {
            // 将属性值slug转换为友好名称
            $attr_value_label = get_attribute_value_label( $meta, $meta_key );
            array_push($data_array, $attr_value_label);
        }
    }
    
    $attribute_sub = implode( ', ', $data_array );
    // 拼接最终标题格式:产品标题 + 换行 + 属性标签
    $final_variation_title = $product->get_title() . "\n" . $attribute_sub;
}

原理说明

WooCommerce的产品属性本质是WordPress自定义分类法,每个属性值对应一个分类术语。get_term_by()是WordPress原生函数,通过分类法(属性组slug)和术语slug即可快速获取术语的友好名称,完全无需手动执行SQL查询。

这样修改后,你就能得到期望的格式:

产品标题
Black, 8 in.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:33:28