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

WooCommerce如何为非单包变量价格添加自定义折扣提示文本

问题解决:仅为WooCommerce整组咖啡变量添加优惠提示文本

我们为客户开发的咖啡电商网站(基于WooCommerce)中,产品设有单包和**整组(6/8/10/12包不等)**两种变量属性。客户需求是:选中整组选项时,价格后显示You're saving 10%的自定义提示文本,但不能将整组变量设置为促销(避免整个产品被标记为促销品)。

当前使用的代码会给所有变量添加该文本,而我们需要仅针对非单包的变量生效,且因产品数量多,逐个指定变量ID不现实,需优化代码。

原代码:

//Custom text
add_filter( 'woocommerce_available_variation', 'custom_variation_price_addition', 10, 3 );
function custom_variation_price_addition( $data, $product, $variation ) {
    $price  = wc_get_price_to_display( $variation );
    $suffix = sprintf( __("You're saving 10%") );

    $data['price_html'] .= '<span class="4xcb"> ' . $suffix . '</span>';

    return $data;
}

优化思路

通过获取变量对应的属性值,判断是否为“单包”以外的选项,仅满足条件时添加提示文本。只需匹配后台设置的属性信息,即可批量生效所有产品。

优化后代码

// 仅为整组咖啡变量添加优惠提示文本
add_filter( 'woocommerce_available_variation', 'custom_variation_price_addition', 10, 3 );
function custom_variation_price_addition( $data, $product, $variation ) {
    // 获取当前变量的属性slug(需替换为你后台实际的属性slug,前缀加pa_)
    $attribute_slug = 'pa_package-size';
    $variation_attribute = $variation->get_attribute( $attribute_slug );

    // 判断属性值是否不是单包(替换为你后台设置的"单包"对应属性值)
    if ( $variation_attribute !== 'Single Pack' ) {
        $suffix = __( "You're saving 10%", 'woocommerce' );
        $data['price_html'] .= '<span class="4xcb"> ' . $suffix . '</span>';
    }

    return $data;
}

关键说明

  1. 属性slug获取:在WooCommerce后台的产品属性设置页,找到对应“包装规格”类属性的slug,代码中需添加pa_前缀(比如属性slug是package-size,则写pa_package-size)。
  2. 属性值匹配:把代码中的'Single Pack'替换为你后台设置的“单包”属性值,注意大小写、空格需完全一致。
  3. 批量生效:此代码会自动匹配所有产品中符合条件的整组变量,无需逐个指定ID,适配大量产品的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:15:38