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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 11:06:25