Нестандартная стоимость доставки товара в Woocommerce - PullRequest
0 голосов
/ 13 ноября 2018

Мне нужно выяснить, как делать ставки на доставку в woocommerce на основе товаров в корзине. Мне нужно взимать 120 при покупке 1-2 товаров и 180 при покупке 3. Я добавил бесплатную опцию доставки на 4+ (из расчета $)

Я попытался добавить это к цене фиксированной ставки: 120 + 60 ([кол-во] -2), она работает во всех случаях, кроме 1 предмета, потому что она стоит 60 долларов.

Есть мысли?

1 Ответ

0 голосов
/ 13 ноября 2018

С помощью следующего кода вы сможете получить эту стоимость доставки:
- 1 или 2 товара: 120
- 3 товара: 180
- 4 товара или более: бесплатная доставкаметод оценки)

1) Добавьте следующий код в файл function.php вашей активной дочерней темы (активной темы):

add_filter('woocommerce_package_rates', 'custom_progressive_shipping_costs', 10, 2);
function custom_progressive_shipping_costs( $rates, $package ){

    $items_count  = WC()->cart->get_cart_contents_count();

    if( $items_count < 3 ){
        $cost_rate = 2;
    } else {
        $cost_rate = $items_count;
    }

    foreach ( $rates as $rate_key => $rate ){
        $taxes = [];
        $has_taxes = false;
        // Targeting "flat rate"
        if ( 'flat_rate' === $rate->method_id ) {
            // For 1, 2 or 3 items
            if ( $items_count <= 3 ) {
                $rates[$rate_key]->cost = $rate->cost * $cost_rate;

                // Taxes rate cost (if enabled)
                foreach ($rates[$rate_key]->taxes as $key => $tax){
                    if( $tax > 0 ){
                        $has_taxes = true;
                        $taxes[$key] = $tax * $cost_rate;
                    }
                }
                if( $has_taxes )
                    $rates[$rate_key]->taxes = $taxes;
            }
            // For more than 3 hide Flat rate
            else {
                // remove flat rate method
                unset($rates[$rate_key]);
            }
        }
    }
    return $rates;
}

И сохраните…

2) В настройках метода доставки, , вам нужно будет установить 60 в качестве вашей «фиксированной ставки» и СОХРАНИТЬ.

Вам необходимо сохранить минимальную сумму для метода "Бесплатная доставка".

Все готово.Проверено и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...