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

WooCommerce变体名称含空格时下拉选项价格显示失效问题

问题根源
  • woocommerce_variation_option_name 过滤器传入的 $term 是属性的前台展示名,保留原始空格、大小写,比如 20 kg 就是原样传入
  • 你从 $variation['attributes'] 中读取的属性值是经过WordPress slug化处理后的结果:空格会被替换为连字符、大写统一转小写,所以20 kg对应的存储值为20-kg
  • 代码中直接用===全等判断两个值,带空格的变体名称自然匹配失败;无空格的变体名slug和原始名称完全一致,所以可以正常追加价格。
修复方案

调整匹配逻辑,将传入的$term也做相同的slug化处理后再对比即可,同时可以优化原有代码中多属性变体直接终止循环的问题:

function display_price_in_variation_options( $term ) {
    $product = wc_get_product();
    $id      = $product->get_id();
    if ( empty( $term ) || empty( $id ) ) {
        return $term;
    }
    if ( ! $product->is_type( 'variable' ) ) {
        return $term;
    }
    
    $product_variations = $product->get_available_variations();
    $term_slug = sanitize_title( $term ); // 把传入的展示名转成slug格式,和存储值对齐

    foreach ( $product_variations as $variation ) {
        // 跳过多属性变体,不要直接return避免终止整个循环
        if ( count( $variation['attributes'] ) > 1 ) {
            continue;
        }
        $attribute = array_values( $variation['attributes'] )[0];
        // 用slug格式对比
        if ( $attribute === $term_slug ) {
            $term .= ' (' . wp_strip_all_tags( wc_price( $variation['display_price'] ) ) . ')';
            break; // 匹配到就退出循环,避免重复追加
        }
    }
    return $term;
}
add_filter( 'woocommerce_variation_option_name', 'display_price_in_variation_options' );

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:45:01