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

求助修正WooCommerce运费计算代码:单品运费×数量异常

问题分析

你的代码问题出在循环购物车商品时,每次都基于已经修改过的运费成本再去乘数量。比如购物车有2个商品,第一个商品处理后运费变成了「原始运费×数量1」,第二个商品又用这个已经变大的运费去乘数量2,最终总运费就成了「原始运费×数量1×数量2」,自然会翻倍甚至更多。

修正后的代码
// Modify shipping cost based on quantity for each item
add_filter('woocommerce_package_rates', 'modify_shipping_cost_based_on_quantity', 10, 2);
function modify_shipping_cost_based_on_quantity($rates, $package)
{
    foreach ($rates as $rate_key => $rate) {
        // 先保存当前运费方式的原始单件成本
        $original_cost = $rate->cost;
        $total_shipping = 0;

        // 遍历每个商品,累加每个商品的运费(单件成本×数量)
        foreach ($package['contents'] as $item) {
            $quantity = $item['quantity'];
            $total_shipping += $original_cost * $quantity;
        }

        // 更新运费成本和格式化后的显示价格
        $rates[$rate_key]->cost = $total_shipping;
        $rates[$rate_key]->formatted_cost = wc_price($rates[$rate_key]->cost);
    }

    return $rates;
}
修正说明
  • 先把每个运费方式的原始单件运费成本存起来,避免后续修改后影响计算
  • 遍历购物车商品时,用原始成本乘以每个商品的数量,累加得到总运费
  • 最后直接把总运费赋值给当前运费方式,确保计算逻辑正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:20:17