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

(Как) можно установить max_fee для фиксированной стоимости доставки в WooCommerce?

Добавление этого значения в поле затрат в настройках фиксированной платы для метода доставки работает:

(1 * [qty]) + [fee min_fee = "2,5"]

(т.е. стоимость доставки 2,5 за заказ + 1 евро за продукт) -> не менее 3,5 и увеличение + 1 за каждый продукт).

Однако я хочу взимать минимум 3,50 (за 1 предмет) и 4,50 при макс. (за 2 и более предметов).Т.е. функционально это формула: (3,5 * [qty]) или [fee **max_fee** = "4,5"]

Возможно ли это?/ Какой правильный синтаксис использовать?Я не могу найти это нигде.Я нашел только эту ссылку («добавить атрибут шорткода max_fee для фиксированной ставки» / «разрешить max_fee в дополнение к min_fee в полях затрат по фиксированной ставке») , что, кажется, указывает на то, что запрос функции для max_fee для фиксированных сборов(кроме процентов) реализовано.Но я не могу заставить его работать.

1 Ответ

0 голосов
/ 28 декабря 2018

Нельзя использовать доступные настройки для начисления переменной стоимости доставки, как определено:

  • 3,50 для первого элемента
  • 4,50 для более чем одного элемента (2 или более)

Поэтому вам нужно будет использовать следующую настраиваемую подключаемую функцию:

add_filter('woocommerce_package_rates', 'custom_shipping_costs', 10, 2 );
function custom_shipping_costs( $rates, $package ){
    // Get cart items count
    $items_count = WC()->cart->get_cart_contents_count();

    // Your cost settings
    $new_cost = $items_count > 1 ? 4.5 : 3.5;

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

        // Targeting "Flat rate" shipping methods
        if ( 'flat_rate' === $rate->method_id ) {
            $default_cost = $rates[$rate_key]->cost;

            $rates[$rate_key]->cost = $new_cost;

            $rate_conversion = $new_cost / $default_cost;

            // Taxes rate cost (if enabled)
            foreach ($rates[$rate_key]->taxes as $key => $tax){
                if( $tax > 0 ){
                    $taxes[$key] = $tax * $rate_conversion;
                    $has_taxes = true;
                }
            }
            if( $has_taxes )
                $rates[$rate_key]->taxes = $taxes;
        }
    }
    return $rates;
}

Код входит в функциюФайл .php вашей активной дочерней темы (или активной темы).Протестировано и работает.

После того, как код сохранен, зайдите в настройки единой ставки и установите стоимость тарифа на 1.00:

enter image description here

Теперь стоимость доставки изменится с 3.50 (для одного предмета) на 4.50 (для более чем одного предмета)

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