如何在WordPress后台及WooCommerce发票添加自定义字段并显示计算税
WooCommerce 自定义税费计算并显示在发票上的解决方案
核心实现思路
先明确你的公式逻辑(修正笔误后):自定义税费 = (产品重量 × 0.660 + 产品单价) × 购买数量,通过WooCommerce的钩子实现购物车计算时自动生成该税费,并确保其同步显示在结账页、订单详情及发票中。
1. 添加自定义税费到购物车/订单
使用woocommerce_cart_calculate_fees钩子,在购物车计算费用时自动计算并添加自定义税费,代码可添加到主题functions.php或自定义代码插件(如Code Snippets)中:
add_action('woocommerce_cart_calculate_fees', 'calculate_custom_tax_fee'); function calculate_custom_tax_fee() { // 后台非AJAX请求时跳过 if (is_admin() && !defined('DOING_AJAX')) return; $total_custom_tax = 0; // 遍历购物车所有商品 foreach (WC()->cart->get_cart() as $cart_item) { $product = $cart_item['data']; $quantity = $cart_item['quantity']; $price = (float)$product->get_price(); // 若使用ACF自定义重量字段,替换下方代码为 get_field('你的ACF重量字段名', $product->get_id()) $weight = (float)$product->get_weight(); // 避免空值导致计算错误 if ($weight > 0 && $price > 0) { // 按公式计算单商品税费 $item_tax = ($weight * 0.660 + $price) * $quantity; $total_custom_tax += $item_tax; } } // 将计算结果作为税费添加到购物车 if ($total_custom_tax > 0) { WC()->cart->add_fee(__('自定义税费', 'woocommerce'), $total_custom_tax, true, ''); // 第三个参数true表示标记为税费,会纳入订单税费统计;最后一个参数为税费类别,留空即可 } }
2. 确保税费显示在发票上
- WooCommerce后台默认的订单打印发票、以及主流PDF发票插件(如WooCommerce PDF Invoices & Packing Slips)会自动识别通过
add_fee添加的税费项,无需额外配置。 - 若需要修改显示名称,直接替换代码中
__('自定义税费', 'woocommerce')的文字即可(比如改为“环保处理费”)。
3. ACF字段适配说明
如果你的产品重量是通过ACF Pro创建的自定义字段存储,而非WooCommerce自带重量字段,只需修改代码中获取重量的行:
// 替换为你的ACF字段名 $weight = (float)get_field('acf_weight_field', $product->get_id());
4. 验证步骤
- 添加商品到购物车,进入结账页确认自定义税费已显示
- 完成下单后,查看后台订单详情,确认税费已计入订单总额
- 生成或打印发票,检查税费项是否正常显示
内容的提问来源于stack exchange,提问作者Yash Advankar
相关产品推荐
相关产品推荐

