Установка налогового класса на основе определенного купона в Woocommerce - PullRequest
0 голосов
/ 28 сентября 2018

Это было дано некоторое время назад, но фильтр больше не работает.Не уверен, если это устарело или нет.Я использую оба фильтра:

  • woocommerce_product_tax_class
  • woocommerce_product_get_tax_class

Моя функция выглядит так:

function wc_diff_rate_for_user( $tax_class, $product ) {
    $tax_class = "Zero rate";
    return $tax_class;
}
add_filter( 'woocommerce_product_tax_class', 'wc_diff_rate_for_user', 1, 2 );

Как установить налоговый класс на основе определенного купона в Woocommerce?

1 Ответ

0 голосов
/ 28 сентября 2018

Начиная с 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 активной дочерней темы (или активной темы).Проверено и работает.

...