Безкоштовна доставка є чудовим бонусом для будь-якого онлайн-покупця та значно допомагає клієнту зважитися на покупку. 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