You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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. 验证步骤

  1. 添加商品到购物车,进入结账页确认自定义税费已显示
  2. 完成下单后,查看后台订单详情,确认税费已计入订单总额
  3. 生成或打印发票,检查税费项是否正常显示

内容的提问来源于stack exchange,提问作者Yash Advankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:35:25