在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
文件中,但没有任何反应。
感谢您的帮助。
答案 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文件中。经过测试,可以正常工作。