Безкоштовна доставка у WooCommerce - налаштування, плагіни та хакі

Сьогодні оновлю одну із нотаток блогу про плагін WooCommerce, присвячену організації безкоштовної доставки в інтернет-магазині. Розгляну основні особливості функції Free Shipping + кілька цікавих прийомів-сніппетів і модулів по темі.

Якщо говорити про переваги цієї фішки, то вона може підвищити ваш прибуток за рахунок бажання покупців набрати більше товарів для її активації. З іншого боку, подібний прийом також позитивно позначиться на лояльності клієнтів, оскільки дозволить їм трохи заощадити.

Створення та налаштування безкоштовної доставки

У базовій комплектації WooCommerce є кілька варіантів доставки: єдина ставка, самовивіз та безкоштовна. У новій актуальній версії вам спочатку потрібно створити «Зону доставки» (наприклад, країна чи місто), а потім уже додавати певні типи.

Знаходяться всі ці фішки у розділі "WooCommerce" - "Налаштування", де потрібно буде вибрати вкладку "Доставка". Після додавання зони та переходу на її сторінку внизу клацніть по кнопці «Додати метод» і вибирайте відповідний пункт.

У налаштуваннях буде 3 поля:

  • назва - відображається на сайті;
  • вимога для спрацьовування;
  • мінімальна сума замовлення, якщо важлива.

У «Вимогах» слід визначити, у якому разі спрацює функція безкоштовної доставки. Є такі опції як:

Найчастіше цей бонус активується при досягненні певної суми замовлення, але, як бачите, можете використовувати цю умову спільно або окремо з купоном/промокодом, що діє.

Увага! Якщо у вас стара версія плагіна магазину, то там інтерфейс трохи інший.

Функціональність включається черезспеціальну однойменну кнопку-чекбокс, а всі параметри задаються на одній сторінці без спливаючих вікон.

Хакі для безкоштовної доставки у WooCommerce

За умовчанням при виконанні заданої умови, відповідний пункт просто виводиться на сторінці кошика разом з іншими:

Все, як правильно, але при цьому користувач зможе вибрати будь-який спосіб зі списку, наприклад, самовивіз або поштове пересилання. Як мені здається, логічнішещоб безкоштовний варіант вибирався автоматично. Певне, розробники зі мною солідарні, т.к. на офіційному сайті з документацією є кілька сніпетів на тему.

Увага! Коди, наведені нижче, додаєте до functions.php (при цьому слідкуйте за тим, з якою версією працюєте). До речі, перед використанням рекомендується почистити кеш модуля - для цього в розділі "WooCommerce" - "Статус" - "Інструменти" навпроти самого першого пункту WC transients натисніть кнопку Очистити.

Сніппет WooCommerce 3.0+

Як було зазначено вище, він приховує всі методи крім «free_shipping». У мене успішно працював і на WC 2.6.

Рішення для версії 2.5

/** * woocommerce_package_rates is a 2.1+ hook */ add_filter( 'woocommerce_package_rates', 'h] = $free_shipping; > return $rates; >

Як показувати безкоштовну+локальну доставку

Якщо ви уважно подивіться, то в коді оператора IF використовуються знайомі нам позначення: free_shipping і local_pickup. Теоретично замість них можна спробувати й інші, наприклад, єдину ставку flat_rate:5 (цифра тут змінюється).

До речі, якщо виправлення шаблону вам здається складним, краще встановіть модуль WC Hide Shipping Methods, розглянутий нижче. По суті, він дублює цей сніпет.

Виняток певних штатів

На офіційній веб-сторінці є ще один цікавий хак, що виконують ті самі завдання, що й попередні, але не для всіх штатів (США). Ймовірно, для наших країн цей код не є особливо актуальним, але можливо комусь він стане в нагоді для загального розвитку.

/** * H ] ) AND !in_array( WC()->customer->shipping_state, $excluded_states ) ) : // Get Free Shipping array до нової array $freeshipping = array(); $freeshipping = $rates['free_shipping']; // Empty the $available_methods array unset($rates); // Add Free Shipping back в $avaialble_methods $rates = array(); $rates[] = $freeshipping; endif; if( isset( $rates['free_shipping'] ) AND in_array( WC()->customer->shipping_state, $excluded_states ) ) < // remove free shipping option unset($rates['free_shipping']); >return $rates; >

Плагіни безкоштовної доставки WooCommerce

Їх всього 2 штуки на даний момент: перший буде новіший і простіший, а другий виконує комплексніші завдання.

WC H Автоматично приховує в процесі оформлення замовлення всі варіанти крім «free shipping». Якщо потрібно, додатково можна залишати і самовивіз (local pickup). Усі параметри задаються в адмінці в налаштуваннях магазину:

В принципі, рішення повністю дублює третій сніппет/хак вище, але воно є більш доброзичливим та наочним для новачків у WordPress.

Advanced Free Shipping

Він дозволяє вказати деякі додаткові умови для безкоштовної доставки в інтернет-магазині, наприклад:

  • загальну суму покупок;
  • країну чи поштовий індекс;
  • вага, кількість товару;
  • купон;
  • і багато інших.

На момент написання статті актуальною була версія 1.1.3, мінімальні вимоги WordPress 4.0+, а оцінка практично 5 з5-ти. Завантажити його можна тут або знайти за назвою з адмінки.

Після активації плагіна функція з'явиться у розділі «Доставка»:

  • по-перше, потрібно його включити - ставте галочку Enable Advanced Free Shipping;
  • потім відзначаємо і другу опцію - вона приховає всі варіанти доставки, якщо умова для безкоштовної спрацює (як у такому разі не потрібен);
  • по-третє, натискаємо на кнопку «Add Free Shipping Method» щоб створити відповідні логічні правила.

Ви можете додати кілька груп параметрів, які будуть працювати за принципом «АБО». Тобто, функція спрацьовує, якщо виконається хоча б один із заданих критеріїв або перший, або другий. У кожній групі дозволяється поєднувати опції з принципом «І» (умова виконається, якщо обидва твердження є правдивими). На скріншоті прикладу вище логіка дій наступна: доставка буде безкоштовною для «міста Київ + «мінімальне замовлення 500грн» АБО для «міста Київ + «хв. замовлення 500 грн».