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

基于折扣后价格调整WooCommerce购物车商品税率

解决WooCommerce按折扣后价格动态设置GST税率的问题

你的代码失效原因很明确:你拿商品原价判断税率,而不是折扣后的实际结算价格,所以折扣生效后税率自然不会跟着变。

修正思路:

  • 从购物车项中获取折扣后的单商品实际价格,用$cart_item['line_total'](该商品的折扣后总价)除以购买数量得到单个价格
  • 用更严谨的条件判断来设置对应税类
  • 确保后台已经创建并配置好5% GST和12% GST这两个税类

修正后的完整代码:

add_action( 'woocommerce_before_calculate_totals', 'change_cart_items_tax_based_on_discounted_price', 10, 1 );
function change_cart_items_tax_based_on_discounted_price( $cart ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    foreach ( $cart->get_cart() as $cart_item ) {
        // 获取折扣后的单商品实际价格
        $discounted_price = $cart_item['line_total'] / $cart_item['quantity'];

        // 根据折扣后价格设置对应税类
        if ( $discounted_price < 1000 ) {
            $cart_item['data']->set_tax_class( '5% GST' );
        } else {
            $cart_item['data']->set_tax_class( '12% GST' );
        }
    }
}

补充说明:

  • 无论是商品本身的折扣还是优惠券折扣,line_total都会自动计算出折扣后的金额,这个取值方式是准确的
  • 务必在WooCommerce后台的设置→税费→税类中确认存在5% GST和12% GST,且每个税类对应的税率规则已正确配置

内容的提问来源于stack exchange,提问作者Prashanth Gowda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:25:09