Установите стоимость доставки для каждой позиции в WooCommerce - PullRequest
0 голосов
/ 12 мая 2019

Существует встроенная опция для доставки товаров из woocommerce, чтобы установить плату за количество товаров в корзине. Существует также возможность оплаты за класс доставки. Но у меня есть тысячи продуктов, и мне нужно взимать плату за каждый продукт (каждый продукт не кол-во продуктов).

Например, 2 товара "яблоки" и 23 товара "апельсины" в корзине. Мне нужно взимать фиксированную плату в размере 10 долларов за любое количество яблок и 10 долларов за любое количество апельсинов. Я, кажется, не могу найти решение этой проблемы в любом из доступных плагинов. Все они взимают плату за количество, но не это.

1 Ответ

0 голосов
/ 12 мая 2019

Чтобы получить стоимость по отдельной позиции в корзине, требуется следующее:

1) В настройках WooCommerce> Доставка: установите стоимость 10 для ваших методов доставки "Единый тариф" (исохранить) .

2) Добавить в functions.php файл вашей активной дочерней темы (или активной темы) , этот код:

add_filter( 'woocommerce_package_rates', 'shipping_cost_based_on_number_of_items', 10, 2 );
function shipping_cost_based_on_number_of_items( $rates, $package ) {
    $numer_of_items = (int) sizeof($package['contents']);

    // Loop through shipping rates
    foreach ( $rates as $rate_key => $rate ){
        // Targetting "Flat rate" shipping method
        if( 'flat_rate' === $rate->method_id ) {
            $has_taxes = false;

            // Set the new cost
            $rates[$rate_key]->cost = $rate->cost * $numer_of_items;

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

Обновите кэши доставки: (обязательно)

  1. Этот код уже сохранен в файле function.php вашей активной темы.
  2. Корзина пуста
  3. В настройках зоны доставки отключите / сохраните любой способ доставки, затем включите обратно / сохраните.

Проверено и работает.

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