WooCommerce满75欧元免运费功能失效问题求助
WooCommerce满75欧元免运费功能失效排查
我基于WordPress和WooCommerce搭建电商网站,需求是客户购物金额超过75欧元时自动移除运费。
测试场景:
- 一款售价39欧元的简单产品A,添加1件到购物车后,购物车页面正常显示商品价格39欧元及运费;
- 将数量增加至2件,商品总价达到78欧元时,运费并未被移除,仍显示在页面上。
我先后尝试了两段代码,均未解决问题:
代码1:尝试只保留免运费选项
function my_hide_shipping_when_free_is_available( $rates ) { $free = array(); foreach ( $rates as $rate_id => $rate ) { if ( 'gratis_verzending' === $rate->method_id && $rate->cost == 0 ) { $free[ $rate_id ] = $rate; break; } } // 输出调试信息 error_log( print_r( $rates, true ) ); error_log( print_r( $free, true ) ); return ! empty( $free ) ? $free : $rates; } add_filter( 'woocommerce_package_rates', 'my_hide_shipping_when_free_is_available', 100 );
代码2:尝试强制满额免运费
function my_force_free_shipping_above_75( $rates ) { // 获取购物车小计 $subtotal = WC()->cart->get_subtotal(); // 检查小计是否超过75欧元 if ( floatval( $subtotal ) > 75 ) { // 遍历运费选项,强制设置免运费 foreach ( $rates as $rate_key => $rate ) { if ( 'gratis_verzending' === $rate_key ) { // 将免运费选项的费用设为0 $rates[ $rate_key ]['cost'] = 0; } } } return $rates; } // 挂载到woocommerce_package_rates过滤器,优先级10 add_filter( 'woocommerce_package_rates', 'my_force_free_shipping_above_75', 10 );
求解决方向。
补充截图信息:
- 截图1:购物车金额39欧元时,页面显示商品价格及运费
- 截图2:购物车金额78欧元时,运费仍未消失
内容的提问来源于stack exchange,提问作者Brango
相关产品推荐
相关产品推荐

