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

问题描述 投票:0回答:1

在我的 WordPress 电子商务网站中,我使用 WP Hotel Booking,一个用于酒店房间预订的插件。结帐过程是使用 WooCommerce 完成的。

问题:我们有不同的房间,价格也不同。例如:

  • A房价格 - 1500
  • B房价格 - 2700
  • C房价格-2200

价格低于 2500 的客房的消费税为 12%,价格高于 2500 的客房的消费税为 18%。

由于我使用 WP Hotel Booking 此定制产品(房间管理),我无法使用 WooCommerce 中的 Additional Tax Classes 选项来设置不同的税级。

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

谢谢

php wordpress woocommerce cart tax
1个回答
3
投票

这是容易获得且容易的事情。

1°)您需要在 WooCommerce 税务设置中创建 2 个新的税务类别。在此示例中,我将该税收类别命名为“

Tax 12
”和“
Tax 18
”。然后,对于每个人,您必须设置不同的
12%
18%
的百分比。

2°)现在这是一个挂在

woocommerce_before_calculate_totals
操作挂钩中的自定义函数,它将根据产品价格应用税级。我不使用税类名称,而是使用小写的税类名称,并且空格由连字符替换。

所以这是代码:

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+ 上运行


© www.soinside.com 2019 - 2024. All rights reserved.