根据 Woocommerce 中的购物车商品价格有条件地设置不同的税率

Set different Tax rates conditionally based on cart item prices in Woocommerce

在我的 Wordpress 电子商务网站中,我使用 WP Hotel Booking,一个用于酒店房间预订的插件。使用 WooCommerce.

完成结帐过程

问题:我们有不同的房间,有不同的 pricing.For 示例:

价格低于 2500 的房间征收 12% 的消费税,高于 2500 的房间征收 18%。

因为我正在使用 WP Hotel Booking 这个自定义产品(房间管理),所以我无法使用 附加税 类 woocommerce 中设置不同税费的选项 类。

我需要你帮助我编写一个函数来检查房间价值,然后决定需要为给定房间设置什么税。

谢谢

这是一种易于访问和简单的东西。

1°) 您需要在 WooCommerce 税收设置中创建 2 个新税收 classes。在这个例子中,我将该税命名为 classes“Tax 12”和“Tax 18”。然后,对于它们中的每一个,您都必须设置 12%18%.[=16= 的不同百分比]

2°) 现在这是一个挂钩在 woocommerce_before_calculate_totals 操作挂钩中的自定义函数,它将根据产品价格应用税 class .我不使用税 class 名称, 但税 class slugs,小写和空格被连字符替换。

所以这是代码:

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

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

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

    foreach ( $cart->get_cart() as $cart_item ) {
        // get product price
        $price = $cart_item['data']->get_price();

        // Set conditionaly based on price the tax class
        if ( $price < 2500 )
            $cart_item['data']->set_tax_class( 'tax-12' ); // below 2500
        if ( $price >= 2500 )
            $cart_item['data']->set_tax_class( 'tax-18' ); // Above 2500
    }
}

代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。

此代码已经过测试并适用于 WooCommerce 版本 3+