2

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

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

  • A房价格 - 1500
  • B房价格 - 2700
  • 房间 c 价格 - 2200

价格低于 2500 的客房征收 12% 的 GST 税,高于 2500 的客房征收 18% 的 GST 税。

由于我为此自定义产品(房间管理)使用WP 酒店预订,因此我无法使用 woocommerce 中的附加税级选项来设置不同的税级。

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

谢谢

4

1 回答 1

3

这是可以访问和容易的。

1°)您需要在 WooCommerce 税收设置中创建 2 个新的税收类别。在本例中,我将税类命名为“ Tax 12”和“ Tax 18”。然后对于它们中的每一个,您将必须设置不同的百分比12%18%

2°)现在这是一个挂在woocommerce_before_calculate_totals动作钩子中的自定义函数,它将根据产品价格应用一个税级。我不使用税类名称,但税类 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+


于 2017-07-07T06:56:39.847 回答