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

优化WooCommerce按购物车总重量递增收费的冗余代码

优化后的WooCommerce重量费用计算代码

你原代码存在大量重复逻辑,完全可以通过数学计算替代手动枚举区间,实现无限重量适配的效果。以下是简化后的代码:

/*
 * Add cart fees by cart total weight - Contributo costo pedane
 */
add_action( 'woocommerce_cart_calculate_fees', 'a_man_ltd_wc_add_cart_fees' );
if ( ! function_exists( 'a_man_ltd_wc_add_cart_fees' ) ) {
    function a_man_ltd_wc_add_cart_fees( $cart ) {
        // 获取购物车总重量
        $weight = $cart->get_cart_contents_weight();
        
        // 重量为0时不添加费用(可选,按需调整)
        if ( $weight <= 0 ) {
            return;
        }
        
        // 计算费用:向上取整重量后乘以每单位2欧元,完全匹配原逻辑
        $amount = ceil( $weight ) * 2;
        
        // 添加费用(固定参数统一定义,避免重复)
        $cart->add_fee(
            'Contributo costo pedane',
            $amount,
            true, // 含税状态
            ''    // 税类
        );
    }
}

核心优化点:

  • 用ceil($weight)对重量向上取整,完美复刻原区间逻辑:比如1.1kg按2单位算4欧元,0.7kg按1单位算2欧元
  • 固定参数(费用名称、含税设置、税类)只定义一次,彻底消除冗余代码
  • 自动适配任意重量值,无需手动新增区间判断
  • 新增重量为0的判断,避免无意义的费用添加(可根据实际需求移除)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:54:51