基于购物车小计的WooCommerce运费折扣配置求助
实现基于购物车小计的分级运费折扣(WooCommerce)
以下代码可实现你需要的分级运费折扣规则,核心逻辑是先获取购物车小计金额,再根据预设区间匹配对应折扣系数:
add_filter( 'woocommerce_package_rates', 'fa_woocommerce_package_rates', 10, 2 ); function fa_woocommerce_package_rates( $rates, $package ) { // 获取购物车小计金额 $cart_subtotal = WC()->cart->subtotal; // 初始化折扣系数(默认无折扣) $discount_rate = 1; // 按门槛高低判断折扣等级(优先判断高门槛) if ( $cart_subtotal > 450 ) { // 超过R$450,70%折扣 → 支付原价的30% $discount_rate = 0.3; } elseif ( $cart_subtotal > 350 ) { // 超过R$350,50%折扣 → 支付原价的50% $discount_rate = 0.5; } // 遍历所有运费方式,应用折扣 foreach ( $rates as $key => $rate ) { // 更新运费成本 $rate->set_cost( $rate->get_cost() * $discount_rate ); // 同步更新运费税费(若有税则生效) if ( $rate->get_tax() > 0 ) { $rate->set_tax( $rate->get_tax() * $discount_rate ); } $rates[ $key ] = $rate; } return $rates; }
关键说明
- 门槛优先级:先判断
>450的高门槛,避免低门槛条件覆盖高门槛规则 - 折扣系数逻辑:70%折扣对应支付原价的30%(
1-0.7=0.3),50%折扣对应支付原价的50%(0.5) - 税费同步:如果你的运费包含税费,同步更新税费金额可保证订单总价计算准确
- 生效操作:修改代码后,需在WooCommerce后台「设置→配送」页面点击「清除缓存」,让新规则生效
内容的提问来源于stack exchange,提问作者Felipe SooUl
相关产品推荐
相关产品推荐

