WooCommerce问题:添加负额购物车手续费时如何设置0税费
解决WooCommerce购物车手续费(折扣)被计征税费的问题
你遇到的问题是尽管在add_fee中传入第三个参数0(等价于false),折扣仍被计税,可通过以下方法处理:
方法一:明确使用布尔值false并指定空税类
将代码修改为:
add_action('woocommerce_cart_calculate_fees', function($cart) { $cart->add_fee(__('Popust za vjernost'), -10, false, ''); });
这里直接传入false作为第三个参数(明确标记为非应税),同时第四个参数$tax_class设为空字符串,彻底避免关联任何税类。
方法二:强制清空费用的税费数据
如果方法一无效,可在添加费用后手动重置税费相关属性:
add_action('woocommerce_cart_calculate_fees', function($cart) { $cart->add_fee(__('Popust za vjernost'), -10, false); // 遍历费用,找到目标折扣并强制禁用税费 foreach ($cart->fees as $fee) { if ($fee->name === __('Popust za vjernost')) { $fee->taxable = 'no'; $fee->tax_data = array(); break; } } });
这种方式直接修改费用对象的taxable属性为'no',并清空税费数据,确保不会产生税费。
额外排查点
- 检查是否有其他插件(如税费管理类插件)或自定义代码在
woocommerce_cart_calculate_fees钩子之后修改了费用的应税状态 - 确认WooCommerce设置中,“折扣是否计税”的选项(在WooCommerce > 设置 > 税费 > 税费选项中)是否未强制对折扣计税
内容的提问来源于stack exchange,提问作者franka
相关产品推荐
相关产品推荐

