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

WooCommerce不同配送等级运费计算异常问题排查修复求助

问题根源

你的代码存在4个核心错误导致运费计算不符合预期:

  • 遍历购物车商品的逻辑错误:循环内匹配到第一个非大件商品直接break终止遍历,匹配到大件商品处理完直接return,无法统计全部大件商品的总数量
  • 未叠加普通商品固定运费:直接修改统一运费的成本,没有保留普通商品每单50美元的基础运费
  • 大件运费基数错误:你的配置中大件阶梯运费的基础值应为150美元/2件,但原有逻辑错误将基础运费和大件运费合并后乘以阶梯系数,导致每次多算50美元基础费用
  • $taxes变量未初始化,无税费配置时会抛出PHP警告

修复后代码

add_filter( 'woocommerce_package_rates', 'different_rates_based_on_quantity_steps', 10, 2 );
function different_rates_based_on_quantity_steps ( $rates, $package ){
    $slug_class_shipping = 'test'; // 大件商品配送分类别名
    $step_change = 2; // 大件阶梯计数单位
    $bulk_base_cost = 150; // 每单位阶梯大件运费
    $normal_base_cost = 50; // 普通商品固定运费
    $bulk_count = 0;
    $has_normal = false;

    // 遍历所有购物车商品统计数量
    foreach( WC()->cart->get_cart() as $cart_item ){
        if( $cart_item['data']->get_shipping_class() == $slug_class_shipping ){
            $bulk_count += $cart_item['quantity'];
        } else {
            $has_normal = true;
        }
    }

    // 计算总运费
    $total_shipping = $has_normal ? $normal_base_cost : 0;
    if( $bulk_count > 0 ){
        $rate_operand = ceil( $bulk_count / $step_change );
        $total_shipping += $rate_operand * $bulk_base_cost;
    }

    // 更新运费配置
    foreach ( $rates as $rate_key => $rate ){
        if( 'flat_rate' === $rate->method_id ) {
            $has_taxes = false;
            $taxes = []; // 初始化税费变量
            // 更新运费成本
            $rates[$rate_key]->cost = $total_shipping;
            // 处理税费
            foreach ($rates[$rate_key]->taxes as $key => $tax){
                if( $tax > 0 ){
                    $tax_percent = $tax / $rate->cost;
                    $taxes[$key] = $total_shipping * $tax_percent;
                    $has_taxes = true;
                }
            }
            if( $has_taxes ){
                $rates[$rate_key]->taxes = $taxes;
            }
        }
    }
    return $rates;
}

生效说明

代码更新后需要清空WooCommerce购物车缓存,或者在后台 WooCommerce > 状态 > 工具 页面清除购物车会话后再测试计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:54:05