WooCommerce升级后税率0%明细税行不显示及0%税行显示需求
解决WooCommerce 0税率时隐藏税行的问题
嘿,这个问题我之前升级WooCommerce的时候也踩过坑!默认情况下,WooCommerce会自动隐藏金额为0的税行,哪怕你开了「显示税费总计:分项」选项。不过通过几个简单的钩子就能搞定,让0税率的税行在购物车、结账页、邮件和发票里都正常显示。
方案1:核心过滤器强制显示0税率税行
WooCommerce有个内置的过滤器woocommerce_hide_zero_tax,默认返回true(也就是隐藏0金额的税行),我们只需要把它改成false就能全局生效:
// 强制显示所有0税率的税行,覆盖WooCommerce默认行为 add_filter( 'woocommerce_hide_zero_tax', '__return_false' );
这个代码会直接告诉WooCommerce:不管税金额是多少,都不要隐藏对应的税行。它会作用于购物车、结账页面、订单邮件,以及大部分主流发票插件(比如官方的WooCommerce PDF发票插件)。
方案2:自定义税行输出(适配特殊场景)
如果遇到某些主题或第三方插件还是不显示0税率税行,可以再添加一个钩子,手动控制税行的输出内容,确保标签和金额都能正常展示:
// 自定义购物车/结账页的税行显示 add_filter( 'woocommerce_cart_totals_tax_html', 'force_display_zero_tax_label', 10, 2 ); // 自定义订单邮件/发票的税行显示 add_filter( 'woocommerce_order_totals_tax_html', 'force_display_zero_tax_label', 10, 2 ); function force_display_zero_tax_label( $html, $tax ) { // 当税金额为0时,手动拼接标签和0金额的显示内容 if ( wc_format_decimal( $tax->get_amount(), wc_get_price_decimals() ) == 0 ) { $html = '<span class="tax-label">' . esc_html( $tax->get_label() ) . '</span> <span class="tax-amount">' . wc_price( 0 ) . '</span>'; } return $html; }
使用方法
把上面的代码添加到你的WordPress主题的functions.php文件末尾,或者用「Code Snippets」这类自定义代码插件来添加(更推荐后者,避免主题升级导致代码丢失)。
测试验证
添加代码后,记得做以下测试确认效果:
- 设置一个0税率的税类,添加商品到购物车,查看购物车/结账页是否显示税行
- 模拟下单流程,检查订单确认邮件里的税行显示
- 如果用了发票插件,生成一张发票确认税行是否正常展示
内容的提问来源于stack exchange,提问作者anotherbreed
相关产品推荐
相关产品推荐

