Безкоштовна доставка є чудовим бонусом для будь-якого онлайн-покупця та значно допомагає клієнту зважитися на покупку. WooCommerce пропонує безкоштовну доставку як доступні варіанти доставки, але він і надалі відображатиме всі способи доставки, доступні клієнтам, незалежно від того, чи відповідають вони вимогам для безкоштовної доставки. Оскільки дуже малоймовірно, що клієнт вирішить платити за доставку, коли він може отримати її безкоштовно, спробуємо сховати інші способи доставки.
Спершу встановити і активувати дочірню тему
Першим кроком буде створення та встановлення дочірньої теми. Цей крок необхідний для збереження змін під час оновлення теми.
Як сховати інші способи доставки
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;
Дивіться також:
Як видно з коду вище, ми захоплюємо всі доступні тарифи доставки та переглядаємо їх, щоб побачити, чи є серед них безкоштовна доставка. Якщо вона з'являється, то повертаємо лише її, інакше повертаємо все без обробки взагалі.
Тепер доступна лише безкоштовна доставка та попередньо обрана для всіх покупок.
Як зберегти самовивіз разом із безкоштовною доставкою
Незважаючи на те, що безкоштовна доставка є дуже спокусливою, деякі клієнти, можливо, віддадуть перевагу самостійно забрати товари, щоби швидше отримати їх. Тож давайте дамо їм цю можливість, трохи змінивши код:
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
Коментарі до запису: 0