Більше результатів...

Загальні селектори
Тільки точні збіги
Шукати у заголовках
Шукати у контенті
Вибір типів постів
Фільтрувати за категоріями
FAQ
Hostenko
Натхнення
Відео уроки
Новини
Плагіни
теми
Уроки
Хакі

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

Огляд хаку

inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!

Спершу встановити і активувати дочірню тему

Першим кроком буде створення та встановлення дочірньої теми. Цей крок необхідний для збереження змін під час оновлення теми.

Весь нижченаведений код буде розміщено у файлі functions.php дочірньої теми. Якщо файл порожній, код буде розміщуватись під початковим  тегом. Якщо файл містить вміст, код слід розмістити в кінці файлу, перед закриваючим тегом PHP ?>якщо він існує.

Як сховати інші способи доставки

WooCommerce буде відображати за замовчуванням всі способи доставки, доступні клієнту, навіть якщо іноді це не має сенсу.

Всі способи

Вище на скрині ми бачимо, що клієнти можуть вибрати фіксовану плату за доставку. Але поки доступна безкоштовна доставка, жодний клієнт не віддасть перевагу платити за те, що можуть отримати безкоштовно, тому давайте змусимо WooCommerce сховувати інші способи доставки, коли доступна безкоштовна доставка.

Щоб досягти цієї мети, будемо використовувати хук woocommerce_package_rates для фільтрації доступних тарифів доставки та збереження лише тарифу безкоштовної доставки:

add_filter( 'woocommerce_package_rates', 'cssigniter_hide_other_methods_when_free_shipping_is_available', 100 );
function cssigniter_hide_other_methods_when_free_shipping_is_available( $rates ) {
	$free = array();
	foreach ( $rates as $rate_id => $rate ) {
		if ( 'free_shipping' === $rate->method_id ) {
			$free[ $rate_id ] = $rate;
			break;
		}
	}

	return ! empty( $free ) ? $free : $rates;

Дивіться також:

Я ку WooCommerce встановити мінімальну суму замовлення

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

Тариф доступ

Тепер доступна лише безкоштовна доставка та попередньо обрана для всіх покупок.

Як зберегти самовивіз разом із безкоштовною доставкою

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

add_filter( 'woocommerce_package_rates', 'cssigniter_hide_other_methods_except_pickup_when_free_shipping_is_available', 10, 2 );
function cssigniter_hide_other_methods_except_pickup_when_free_shipping_is_available( $rates ) {
	$my_rates = array();
	foreach ( $rates as $rate_id => $rate ) {
		if ( 'free_shipping' === $rate->method_id ) {
			$my_rates[ $rate_id ] = $rate;
			break;
		}
	}

	if ( ! empty( $my_rates ) ) {
		foreach ( $rates as $rate_id => $rate ) {
			if ( 'local_pickup' === $rate->method_id ) {
				$my_rates[ $rate_id ] = $rate;
				break;
			}
		}
		return $my_rates;
	}

	return $rates;
}

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

Всі доступні тарифи

Тепер доступна безкоштовна доставка та місцевий самовивіз, фіксовану ставку доставки скасовано.

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

Джерело: www.cssigniter.com

inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!
Олексій Шевченко
редактор wpcafe
Вивчає сайтобудування з 2008 року. Практикуючий вебмайстер, який спеціалізується на створенні сайтів на WordPress. Задати питання Олексію можна на https://profiles.wordpress.org/wpthemeus/

Коментарі до запису: 0

Додати коментар або відгук