优化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
相关产品推荐
相关产品推荐

