如何在WooCommerce中设置按商品计算的固定金额税类?
解决WooCommerce每件商品固定金额税费的实现方案
核心实现逻辑
绕过WooCommerce后台的百分比税率限制,通过PHP钩子直接按商品数量计算固定税费,并确保在PDF发票中正确显示。
代码实现
将以下代码添加到主题的functions.php文件,或自定义插件中:
// 计算并添加每件商品的固定税费 add_action('woocommerce_cart_calculate_fees', 'add_per_item_fixed_ca_tax'); function add_per_item_fixed_ca_tax() { if (is_admin() && !defined('DOING_AJAX')) return; $fixed_tax = 1.75; // 每件商品固定税费金额 $total_tax_amount = 0; // 遍历购物车商品,按数量累计税费 foreach (WC()->cart->get_cart() as $item) { $total_tax_amount += $fixed_tax * $item['quantity']; } // 累计税费大于0时,添加到购物车税费项 if ($total_tax_amount > 0) { WC()->cart->add_fee('加州固定商品税', $total_tax_amount, true); // 第三个参数true标记为税费,确保被纳入税务统计并在发票中正确归类 } } // 确保PDF发票中正确显示该税费项(适配WooCommerce PDF Invoices & Packing Slips插件) add_filter('wpo_wcpdf_woocommerce_totals', 'adjust_ca_tax_in_pdf', 10, 2); function adjust_ca_tax_in_pdf($totals, $order) { foreach ($totals as $key => $total) { if ($total['label'] === '加州固定商品税') { // 可按需修改发票上的显示标签 $totals[$key]['label'] = '加利福尼亚州固定商品税费'; $totals[$key]['value'] = wc_price($order->get_fee_total('加州固定商品税')); } } return $totals; }
关键说明
- 第一个钩子
woocommerce_cart_calculate_fees负责在购物车结算阶段计算并添加税费,标记为税务类型后,WooCommerce会自动将其纳入订单税务总额。 - 第二个钩子针对主流的PDF发票插件调整显示逻辑,若使用其他发票插件,需替换为对应插件的钩子函数。
- 可直接修改
$fixed_tax的值调整每件商品的税费金额,也可修改标签文本匹配当地政府要求。 - 代码生效前需清空购物车缓存,测试不同商品数量的税费计算是否正确。
内容的提问来源于stack exchange,提问作者Muhammad Jawad
相关产品推荐
相关产品推荐

