如何在WooCommerce购物车中为不同商品设置不同附加费用
实现方案
你只需要将原来存储商品ID的索引数组改为关联数组,以产品ID为键、对应附加费金额为值,调用附加费时直接读取对应ID的金额即可,修改后的完整代码如下:
add_action('woocommerce_cart_calculate_fees', 'add_fees_on_ids'); function add_fees_on_ids() { if (is_admin() && !defined('DOING_AJAX')) { return; } // 存储对应产品的附加费配置:键为产品ID,值为附加费金额 $product_fee_config = get_product_fee_config(); foreach( WC()->cart->get_cart() as $item ) { $product_id = $item['product_id']; // 校验当前产品是否配置了附加费 if (isset($product_fee_config[$product_id])) { // 如需按购买数量叠加附加费,可将下方金额改为 $product_fee_config[$product_id] * $item['quantity'] WC()->cart->add_fee(__('ADDITIONAL FEE:'), $product_fee_config[$product_id]); } } } // 统一维护产品附加费配置 function get_product_fee_config() { return [ 1234 => 10, // 产品ID1234附加费10元,可自行修改金额 5678 => 15, // 产品ID5678附加费15元,可自行修改金额 2179 => 5 // 保留你原来配置的产品ID2179的附加费 ]; }
- 你可以直接在
get_product_fee_config函数的返回数组里新增/修改产品ID和对应附加费金额,新增格式为产品ID => 附加费金额,多个配置用英文逗号分隔即可 - 如果需要同个产品购买多件时叠加收取多份附加费,把
add_fee的第二个参数改为$product_fee_config[$product_id] * $item['quantity']即可
内容的提问来源于stack exchange,提问作者amex
相关产品推荐
相关产品推荐

