如果在Woocommerce中选择本地取货方式,则免税

时间:2018-06-21 05:52:13

标签: php wordpress woocommerce cart shipping

在Woocommerce中,我在我的网站(targetools.co.il)中设置了2种送货方式:免费送货和本地取货。商店中的所有产品均显示含税价格。

我希望当客户选择“本地取件”运输选项时,它将从总额(免税区)中减少税收。

我将免费送货设置为17%税,本地取件设置为0。

我找到了以下代码:

/* Remove tax from cart for FOB orders */
function remove_tax_for_fob( $cart ) {
    $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
    $chosen_shipping = $chosen_methods[0]; 
    if($chosen_shipping =='FOB') {
        $cart->remove_taxes();
    }
    return $cart;
}
add_action( 'woocommerce_calculate_totals', 'remove_tax_for_fob' );

并将其放置在主题的functions.php文件中,但没有任何反应。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

自woocommerce版本3.2以来,已弃用WC_Cart方法remove_taxes()

您最好使用以下功能代码,但在此之前,您需要按照此线程中的说明设置零税率税类:Taxes applied based on cart item quantity in Woocommerce

以下代码将从购物车中删除税款:

add_action( 'woocommerce_before_calculate_totals', 'local_pickup_remove_taxes', 20, 1 );
function local_pickup_remove_taxes( $cart ){
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

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

    $chosen_shipping_method = WC()->session->get( 'chosen_shipping_methods' )[0];

    if ( strpos($chosen_shipping_method, 'local_pickup') !== false ){
        foreach( $cart->get_cart() as $cart_item ){
            $cart_item['data']->set_tax_class('zero-rate');
        }
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。