Отключить налог на определенный способ доставки в Woocommerce - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть 3 способа доставки в моем магазине Woocommerce, и я хочу отключить налоговую ставку, когда клиент выбирает третий способ доставки.

Как я могу это сделать?

1 Ответ

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

Поскольку настройки, по-видимому, не работают для удаления налогов с определенных методов доставки, попробуйте следующий код , который установит нулевые налоги для ваших определенных методов доставки:

add_filter('woocommerce_package_rates', 'null_specific_shipping_method_taxes', 12, 2);
function null_specific_shipping_method_taxes( $rates, $package ){
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return $rates;

    // HERE define your targeted shipping methods IDs (in this array)
    $shipping_methods_ids = array( 'flat_rate:2', 'flat_rate:12', 'flat_rate:3', 'shipping_by_rules:5' );

    // Loop through shipping rates
    foreach ( $rates as $rate_key => $rate ){
        $has_taxes = false;

        // Only for your defined Shipping method IDs
        if( in_array( $rate->id, $shipping_methods_ids ) ){
            $taxes = [];
            // Loop through the shipping taxes array (as they can be many)
            foreach ($rates[$rate_key]->taxes as $key => $tax){
                if( $rates[$rate_key]->taxes[$key] > 0 ){
                    // Set each tax cost to zero
                    $taxes[$key] = 0;
                    $has_taxes   = true;
                }
            }
            // Set the new taxes array
            if( $has_taxes )
                $rates[$rate_key]->taxes = $taxes;
        }
    }
    return $rates;
}

Этот код помещается в файл function.php вашей активной дочерней темы (или темы). Протестировано и работает (если настройки выполнены правильно, относительно связанных способов доставки и налогов в Woocommerce)

...