Установите все налоги на доставку равными нулю для WooCommerce

#wordpress #woocommerce #rate #tax

Вопрос:

У меня есть эта функция, чтобы проверить, есть ли у вошедшего в систему пользователя ACF gratis verzending отметка, поэтому на основе этого я установил тариф доставки 0 .

 add_filter('woocommerce_package_rates','free_shipping_for_customer',100,2);
function free_shipping_for_customer($rates, $package) {

    $current_user = wp_get_current_user();
    $current_user_id = $current_user->ID;
    $free_shipping = get_field('gratis_verzending', 'user_'.$current_user_id.'');
    
    if ($free_shipping) {
        
        foreach ($rates as $rate) {
            //Set the price
            $rate->cost = 0;
        }
        
    }
    return $rates;
}
 

Моя проблема в том, что shipping tax это все еще ценность. Если у пользователя есть free shipping налоги, то вся доставка должна быть 0 . Как я могу установить все налоги на доставку 0 ?

НАШЕЛ РЕШЕНИЕ:

 add_filter('woocommerce_package_rates', 'shipping_cost_based_on_weight', 12, 2);
function shipping_cost_based_on_weight( $rates, $package ){
    if ( is_admin() amp;amp; ! defined( 'DOING_AJAX' ) )
        return $rates;
    
    $current_user = wp_get_current_user();
    $current_user_id = $current_user->ID;
    $free_shipping = get_field('gratis_verzending', 'user_'.$current_user_id.'');

    if ($free_shipping) {
        // Loop through the shipping taxes array
        foreach ( $rates as $rate_key => $rate ){
            $has_taxes = false;
                // Set the new cost
                $rates[$rate_key]->cost = 0;
                // Taxes rate cost (if enabled)
                $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 the new tax cost
                        $taxes[$key] = 0;
                        $has_taxes   = true; // Enabling tax
                    }
                }
                if( $has_taxes )
                    $rates[$rate_key]->taxes = $taxes;
        }
    }
    return $rates;
}