如何在WooCommerce中获取订单税费详情与税率百分比?
获取WooCommerce订单的税率百分比
嘿,这问题我熟!在WooCommerce里要拿到订单的税率百分比其实不难,不用自己瞎算,系统已经给我们准备好了现成的方法。下面分几种场景给你最简便的实现方案:
场景1:订单只有一种税率(最常见情况)
如果你的订单里所有商品都用同一种税率,直接用get_tax_totals()获取税费项,再提取百分比就行:
// 确保$order是有效的WC_Order对象 if ( $order instanceof WC_Order ) { // 获取订单的所有税费汇总项 $tax_totals = $order->get_tax_totals(); // 检查是否有税费数据 if ( ! empty( $tax_totals ) ) { // 取第一个税费项(因为只有一种税率) $primary_tax = reset( $tax_totals ); // 获取纯数字形式的税率百分比(比如返回21) $tax_percent = $primary_tax->get_rate_percent(); // 如果你需要带%符号,直接拼接即可 $tax_display = $tax_percent . '%'; // 把这个值赋值给你的自定义变量 $your_custom_variable = $tax_percent; } }
场景2:订单包含多种税率
如果订单里有不同税率的商品(比如部分商品免税,部分收21%),可以遍历所有税费项,分别获取每个税率的百分比:
if ( $order instanceof WC_Order ) { $tax_totals = $order->get_tax_totals(); foreach ( $tax_totals as $tax_code => $tax_item ) { // 获取税率名称(比如"荷兰增值税") $tax_label = $tax_item->get_label(); // 获取税率百分比 $tax_percent = $tax_item->get_rate_percent(); // 这里可以根据需求处理每个税率,比如存入数组 $all_taxes[] = [ 'label' => $tax_label, 'percent' => $tax_percent . '%' ]; } }
场景3:获取单个订单项的税率
如果需要针对某个具体商品获取它的税率,可以遍历订单项来获取:
if ( $order instanceof WC_Order ) { foreach ( $order->get_items() as $item ) { $product = $item->get_product(); if ( ! $product ) continue; // 获取商品的税类,再对应到税率 $tax_class = $product->get_tax_class(); $tax_rates = WC_Tax::get_rates( $tax_class ); if ( ! empty( $tax_rates ) ) { $tax_rate = reset( $tax_rates ); // 这里的rate就是百分比数字(比如21) $item_tax_percent = $tax_rate['rate']; echo '商品「' . $item->get_name() . '」的税率:' . $item_tax_percent . '%'; } } }
小提示
- 一定要确认
$order是有效的WC_Order对象,比如在woocommerce_thankyou钩子里使用时,系统会自动传入订单ID,你可以先用$order = wc_get_order( $order_id )来获取对象。 get_rate_percent()方法返回的是纯数字,所以你可以直接用来计算,或者拼接%符号用于显示,非常灵活。
内容的提问来源于stack exchange,提问作者Thijmen van Doorn
相关产品推荐
相关产品推荐

