Як сховати інші способи доставки, якщо доступна безкоштовна

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

Обзор хака

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

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

Увесь наведений нижче код буде розміщено у файлі functions.php дочірньої теми. Якщо файл порожній, код розміщуватиметься під початковим  тегом <?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, а потім перевіряємо, чи доступна також місцева самовивіз. Якщо її знайдемо, то збережемо у тому самому масиві та повернемо його, надавши клієнту лише ці два варіанти доставки. Якщо безкоштовна доставка недоступна, ми повертаємо всі доступні тарифи без їх обробки.

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

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

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


Алексей Шевченко
Алексей Шевченко
редактор wpcafe
Изучает сайтостроение с 2008 года. Практикующий вебмастер, специализирующий на создание сайтов на WordPress. Задать вопрос Алексею можно на https://profiles.wordpress.org/wpthemeus/

Источник: hostenko.com/wpcafe

%d такие блоггеры, как: