Зоны доставки
Зоны доставки определяют, куда и за сколько доставляет ресторан. Woo2iiko рассчитывает зону по адресу клиента и фильтрует доступные методы доставки.
Как определяется зона
При вводе адреса на checkout:
- Адрес геокодируется в координаты (lat, lon).
- Выполняется проверка point-in-polygon — попадает ли точка в одну из зон.
- Определяется доступная зона, её стоимость и минимальная сумма.
- Методы доставки фильтруются по зоне.
Источник зон
| Настройка | Источник | Когда использовать |
|---|---|---|
manual_delivery_zones = no | Зоны из iiko API (get_delivery_restrictions) | По умолчанию. |
manual_delivery_zones = yes | Ручные зоны (полигоны) | Если нужна своя геометрия, не из iiko. |
Ручные зоны (KML)
Ручные зоны можно импортировать из Google My Maps в формате KML:
- В WooCommerce → iiko → Delivery Zones включите
manual_delivery_zones. - Нажмите Импорт KML и загрузите файл.
- Полигоны сохранятся в
manual_zones(ключ, имя, координаты).
Создание KML в Google My Maps
- Откройте Google My Maps.
- Нарисуйте полигоны зон.
- Экспортируйте слой как KML.
- Загрузите в плагин.
Шлюз iiko_shipping
Плагин регистрирует метод доставки iiko_shipping в WooCommerce (настройки WooCommerce → Настройки → Доставка). Поля:
| Поле | Назначение |
|---|---|
iiko_id | UUID зоны iiko. |
cost | Стоимость доставки. |
min_amount | Минимальная сумма заказа. |
max_amount | Максимальная сумма. |
zone | Зона. |
fee_cost | Дополнительная комиссия. |
ignore_discounts | Игнорировать скидки. |
Минимальная сумма заказа
Для каждой зоны можно задать min_amount:
- Если сумма корзины меньше минимума — показывается нотис «Минимальная сумма заказа для вашего адреса: X».
- Доставка блокируется до достижения минимума.
Самовывоз
При выборе самовывоза (billing_delivery_type = pickup/1):
- Доступны только методы
local_pickup. - Адресные поля скрываются.
- Проверка зоны не выполняется.
Ограничения доставки
Дополнительные ограничения через iiko:
| Настройка | Назначение |
|---|---|
enable_restrictions | Включить внутренние ограничения (iiko_internal_restriction_request). |
enable_external_restrictions | Включить внешние ограничения. |
order_creation_front_timeout | Таймаут API при создании заказа (по умолчанию 60). |
Настройки зон
| Настройка | Назначение | По умолчанию |
|---|---|---|
zone_by_coordinates | Расчёт зоны по координатам на фронте | no |
woo_custom_delivery_method | Регистрация IikoShippingMethod | no |
use_woo_delivery | Логика доступности доставки | yes |
manual_delivery_zones | Источник зон: ручные / из iiko | no |
manual_zones | Полигоны ручных зон | [] |
Виджет проверки зоны (ZoneChecker)
Для предзаказной проверки зоны используйте шорткод:
[iiko_zone_checker mode="both" show_map="yes" height="400"]Гость вводит адрес или координаты — виджет показывает, попадает ли точка в зону, на карте Yandex.
Кеш зон
Список зон кешируется (trs_cache, ключ woo_shipping_delivery_zone_options_v2, TTL 1 час). После изменения зон в iiko или ручных зон очистите кеш.
WP-CLI
wp woo2iiko cache_clear