Как скрыть способы доставки WooCommerce при определенных условиях
Опубликовано: 2020-06-15Способ доставки — это услуга и плата , которую покупатель видит при оформлении заказа при покупке любого товара. Это будет важным вариантом для магазина электронной коммерции для бесперебойной доставки .
В качестве решения для электронной коммерции WooCommerce также предоставляет такие способы доставки, как бесплатная доставка , фиксированная ставка и самовывоз , которые можно настроить для различных зон доставки в зависимости от местоположения. Например, опция «Бесплатная доставка» доступна только для определенного диапазона почтовых индексов, которые находятся рядом с местом расположения магазина, а опция «Фиксированная ставка» доступна для остальной части зон доставки.

Варианты доставки на основе местоположения могут быть легко реализованы с помощью плагина, но в определенных условиях, когда местоположение не играет жизненно важной роли, владельцам магазинов становится очень сложно добиться этого. Условия могут быть:
- Некоторые способы доставки, такие как бесплатная доставка, должны быть недоступны, если вес заказа превышает определенное количество фунтов или кг.
- Доступность некоторых способов доставки также зависит от количества партий или цены всего заказа. Например, если общая сумма заказа превышает 250 долларов США, тогда должен быть доступен только способ бесплатной доставки, а платные способы доставки не должны быть доступны.
Может быть больше таких условий, для которых способы доставки должны быть показаны или скрыты во время оформления заказа, но в этом посте мы объясним вышеизложенное 2. Чтобы добиться этого для вашего магазина WooCommerce, вы можете добавить фрагмент кода или использовать любой тариф доставки доступные плагины .
Использование фрагмента кода
Давайте возьмем пример условия 1, упомянутого выше, где Бесплатная доставка не должна быть доступна, если вес заказа превышает 5 кг. Вы можете добиться этого, добавив приведенный ниже код в файл functions.php текущей активной темы.
Примечание. Эти изменения могут быть перезаписаны обновлением текущей темы, поэтому рекомендуется создать дочернюю тему и добавить необходимые фрагменты кода в файл functions.php дочерней темы. Или вы можете использовать плагин Code Snippets для добавления пользовательских фрагментов.
/** * Скрыть бесплатную доставку, если вес заказа превышает 10 кг. * * @param array $rates Массив найденных ставок для пакета. * @возвратный массив */ функция ts_hide_free_shipping_for_order_weight ($ цены, $ упаковка) { $order_weight = WC()->корзина->get_cart_contents_weight(); если ($order_weight > 5) { foreach($rates as $rate_id => $rate_val) { если ( 'free_shipping' === $rate_val->get_method_id() ) { unset($rates[$rate_id]); } } } вернуть $ставки; } add_filter('woocommerce_package_rates', 'ts_hide_free_shipping_for_order_weight', 100, 2 );
Здесь фильтр woocommerce_package_rates используется для изменения расчетных ставок в корзине. Он содержит все тарифы на доставку, которые будут доступны после добавления товара в корзину. Итак, нам нужно отключить требуемый способ доставки, который в нашем случае будет бесплатной доставкой, из массива, возвращаемого этим фильтром, если вес заказа превышает 5 кг.
Страница продукта:

Страница корзины со способами доставки:

Другим примером сокрытия способов доставки в корзине WooCommerce является разрешение только бесплатной доставки во время оформления заказа, когда общая сумма заказа превышает 250 долларов США. Этого можно добиться, добавив приведенный ниже код в файл functions.php.

/** * Скрыть стоимость доставки, если общая сумма заказа превышает 250 долларов США. * * @param array $rates Массив найденных ставок для пакета. * @возвратный массив */ функция ts_hide_shipping_for_order_total ($ ставки) { $ бесплатно = массив(); $order_total = WC()->корзина->get_subtotal(); если ($order_total > 250) { foreach ($rates as $rate_id => $rate) { если ( 'free_shipping' === $rate->get_method_id() ) { $бесплатно[$rate_id] = $ставка; } } } возвращаться ! пустой ($ бесплатно)? $бесплатно : $ставки; } add_filter('woocommerce_package_rates', 'ts_hide_shipping_for_order_total', 100);
Здесь, когда общая сумма заказа превышает 250 долларов США, из фильтра возвращается массив только с бесплатными способами доставки, в противном случае возвращаются все тарифы на доставку.

В приведенных выше примерах мы взяли ссылку на метод бесплатной доставки, поэтому используемый идентификатор метода — free_shipping. Для изменения других способов доставки идентификаторы методов:
Самовывоз: local_pickup
Фиксированная ставка: flat_rate
Функция get_method_id() извлекает идентификатор метода только для 3 методов для всех зон доставки, а не для отдельного метода одной зоны доставки, поэтому она скрывает все фиксированные ставки, местный самовывоз или методы бесплатной доставки, доступные во время оформления заказа. Но если вы хотите скрыть определенный способ доставки, необходимо использовать комбинацию идентификатора способа доставки и идентификатора экземпляра.
Например, «flat_rate:3», где 3 — это уникальный идентификатор экземпляра, хранящийся для каждого метода доставки для зоны в базе данных. Вы можете найти идентификатор экземпляра метода доставки, щелкнув правой кнопкой мыши метод доставки и просмотрев элемент в инструменте разработчика в своем браузере.
Использование различных расширений WooCommerce для способов доставки
Существует несколько платных или бесплатных расширений для настройки способов доставки для различных условий. Вот некоторые из наиболее часто используемых плагинов:
Платные плагины:
- Table Rate Shipping by WooCommerce : этот плагин расширяет стандартные варианты доставки WooCommerce, предоставляя вам настраиваемые варианты доставки.
- Плагин Advanced Flat Rate Shipping для WooCommerce : этот плагин поможет вам настроить тарифы доставки в вашем магазине на основе расширенных правил доставки.
- Плагин WooCommerce Advance Shipping от Jeroen Sormani : этот плагин позволяет вам включать способы доставки во время оформления заказа на основе установленных правил. Правила могут быть установлены для различных сведений о корзине, сведений о продукте или различных сведений о пользователе .
- Гибкая доставка Pro для WooCommerce от WP Desk : этот плагин позволяет вам включить способ доставки на основе конкретного товара, строки корзины, правил цены или веса .
Бесплатные плагины:
Некоторые из вышеперечисленных плагинов также имеют бесплатную версию с ограниченными функциями. Они есть:
- WooCommerce Advanced Free Shipping от Jeroen Sormani: это бесплатная версия плагина WooCommerce Advanced Shipping. Единственная разница между обоими плагинами заключается в том, что этот плагин допускает только бесплатный способ доставки для установленных правил, а платный плагин разрешает все способы доставки.
- Гибкая доставка для WooCommerce от WP Desk : это бесплатная версия плагина Flexible Shipping Pro для WooCommerce. Позволяет настроить способы доставки только по цене и весу.
Для подробного объяснения вышеупомянутых плагинов вы можете проверить этот пост.
Вывод
Как мы видели в этом посте, варианты предварительной доставки можно реализовать, просто добавив фрагмент кода на свой веб-сайт или используя различные доступные плагины. Таким образом, вы можете попробовать данный фрагмент кода или поэкспериментировать с любым из плагинов и сообщить нам, полезно ли это для вашего магазина WooCommerce.