Начиная с Woocommerce 3, фильтр-хук woocommerce_product_tax_class
больше не существует, доступен и работает только новый woocommerce_product_get_tax_class
композитный фильтр-хук.
Существует несколько способов установить класс налога на основе примененного кода купона (В обоих нижеприведенных примерах мы устанавливаем класс налога "Нулевая ставка", когда определенный код купонаприменяется) :
1) Использование woocommerce_before_calculate_totals
ловушки действий, наилучшим образом :
add_action( 'woocommerce_before_calculate_totals', 'change_tax_class_based_on_specific_coupon', 25, 1 );
function change_tax_class_based_on_specific_coupon( $cart ) {
// Define your coupon code below
if ( ! $cart->has_discount('summer') )
return;
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
foreach( $cart->get_cart() as $cart_item ){
// We set "Zero rate" tax class
$cart_item['data']->set_tax_class("Zero rate");
}
}
Код помещается в файл function.php активногодетская тема (или активная тема).Протестировано и работает.
2) Использование woocommerce_product_get_tax_class
ловушки фильтра:
add_filter( 'woocommerce_product_get_tax_class', 'change_tax_class_based_on_specific_coupon', 30, 2 );
function change_tax_class_based_on_specific_coupon( $tax_class, $product ) {
// Define your coupon code below
if( WC()->cart->has_discount('summer') )
$tax_class = "Zero rate";
return $tax_class;
}
Код помещается в файл function.php активной дочерней темы (или активной темы).Проверено и работает.