WooCommerce 如何仅统计减免税率订单项的累计总金额
指定税类商品的合计金额导出方案
前置确认
首先需要确定减免税率对应的唯一匹配标识,二选一即可:
- 税类slug:在WooCommerce后台「设置 > 税率」页面,找到减免税率对应的税类别名,例如默认减免税类的slug为
reduced-rate - 税率ID:用你现有的税类遍历代码,打印每个税目的
rate_id,对应你场景中减免税总税额(示例中为5+2.5=7.5€)的rate_id即为目标值
核心实现代码
代码逻辑为遍历所有商品订单项,匹配目标税类/税率ID后累加含税总金额:
// 按需修改目标值,二选一即可 // 方式1:按税类slug匹配 $target_tax_class = 'reduced-rate'; // 方式2:按税率ID匹配(多税率叠加场景推荐用这个) // $target_tax_rate_id = 5; $reduced_tax_amount_total = 0; $order = wc_get_order( $order_id ); foreach ( $order->get_items() as $item_id => $item ) { // 仅统计商品项,排除运费、附加费等非商品条目 if ( $item->get_type() !== 'line_item' ) { continue; } // 获取当前订单项的税类、适用税率ID数组 $current_item_tax_class = $item->get_tax_class(); $current_item_tax_rates = $item->get_tax_rates(); // 匹配逻辑按需切换,二选一 $is_reduced_tax_item = ( $current_item_tax_class === $target_tax_class ); // 用税率ID匹配则用下方注释的逻辑 // $is_reduced_tax_item = in_array( $target_tax_rate_id, $current_item_tax_rates ); if ( $is_reduced_tax_item ) { // 累加含税金额 = 商品不含税总计 + 对应税额 $item_excl_tax_total = $item->get_total(); $item_tax_total = $item->get_total_tax(); $reduced_tax_amount_total += ( $item_excl_tax_total + $item_tax_total ); } } // 输出格式化的最终金额(示例场景下会得到157.50€) echo wc_price( $reduced_tax_amount_total );
调整说明
- 若需要统计未扣减折扣的原价合计,将代码中的
get_total()替换为get_subtotal()、get_total_tax()替换为get_subtotal_tax()即可 - 多税率叠加的复杂场景,优先使用税率ID匹配,避免同税类下不同税率的商品被误统计
- 不确定目标标识时,可临时在循环中打印
$current_item_tax_class和$current_item_tax_rates,对应商品A、B的信息即可获取正确的匹配值
内容的提问来源于stack exchange,提问作者Cray
相关产品推荐
相关产品推荐

