WooCommerce后台订单商品自定义价格及税费字段添加求助
WooCommerce后台订单商品添加自定义计算字段解决方案
问题1:添加「商品小计+运费」字段
原代码存在三个关键问题:
- 未正确调用
wc_price()函数,仅写了函数名而非执行调用 - 未获取当前订单对象,无法计算小计与运费总和
- HTML输出未做安全转义处理
修正后的完整代码:
// 添加自定义表头 add_action('woocommerce_admin_order_item_headers', 'add_order_item_total_shipping_header'); function add_order_item_total_shipping_header() { $column_name = '小计+运费'; echo '<th>' . esc_html($column_name) . '</th>'; } // 添加自定义字段值 add_action('woocommerce_admin_order_item_values', 'add_order_item_total_shipping_value', 10, 3); function add_order_item_total_shipping_value($_product, $item, $item_id) { // 仅针对商品行项显示 if ($item->get_type() !== 'line_item') return; // 通过订单行项获取订单对象 $order = $item->get_order(); if (!$order) return; // 计算小计+运费的总和 $total = $order->get_subtotal() + $order->get_shipping_total(); // 格式化价格 $formatted_total = wc_price($total, array('currency' => $order->get_currency())); echo '<td>' . $formatted_total . '</td>'; }
问题2:添加「含运费的总税费」字段
原代码核心问题:get_tax_totals()返回的是税费类型数组(而非数值),无法直接传入wc_price(),需计算所有税费(商品税+运费税)的总和。
修正后的完整代码:
// 添加税费表头 add_action('woocommerce_admin_order_item_headers', 'add_order_item_total_tax_header'); function add_order_item_total_tax_header() { $column_name = '总税费(含运费)'; echo '<th>' . esc_html($column_name) . '</th>'; } // 添加税费字段值 add_action('woocommerce_admin_order_item_values', 'add_order_item_total_tax_value', 10, 3); function add_order_item_total_tax_value($_product, $item, $item_id) { // 仅针对商品行项显示 if ($item->get_type() !== 'line_item') return; // 通过订单行项获取订单对象 $order = $item->get_order(); if (!$order) return; // 计算所有税费总和(商品税+运费税) $total_tax = $order->get_total_tax(); // 格式化价格 $formatted_tax = wc_price($total_tax, array('currency' => $order->get_currency())); echo '<td>' . $formatted_tax . '</td>'; }
关键修正说明
- 改用
$item->get_order()获取订单对象,比get_the_ID()更可靠,避免页面上下文冲突 - 使用
$item->get_type()替代$item['type'],符合WooCommerce面向对象API规范 - 对表头文本使用
esc_html()做转义,提升代码安全性 - 税费计算直接调用
get_total_tax(),该方法已包含商品税和运费税总和,无需手动遍历数组
内容的提问来源于stack exchange,提问作者Victor Daniel Witoszek
相关产品推荐
相关产品推荐

