Если способ доставки не показывается
Эта часть помогает найти причину, если покупатель не видит способ «Стоимость за расстояние» или видит не ту цену. В конце — частые вопросы и короткий раздел для разработчиков.
Как быстро узнать причину: «Логирование» #
Плагин знает, почему скрыл способ доставки. Причина записывается в журнал; в классическом сообщении об отсутствии доставки покупателю могут показываться отдельные пояснения из таблицы цен или перенесённых правил. Чтобы причину увидели вы, включите «Логирование»:
- Откройте «Woodev → Настройки», вкладку «Расчёт за расстояние», подвкладку «Дополнительно».
- Включите «Логирование» и нажмите «Сохранить».

Теперь причина видна в двух местах.
На странице оформления заказа. Войдите в админку как администратор или менеджер магазина и откройте оформление заказа на сайте. Под блоком доставки появится красная строка, например: «Скрыт: «Курьер» — Не создано ни одного склада». Покупатели эту строку не видят: она только для тех, кто управляет магазином, и только пока включено «Логирование».
В журнале. Откройте «WooCommerce → Статус → Журналы» и выберите файл, название которого начинается с «range_rate» и заканчивается датой. Строка о скрытом способе выглядит так: The shipping method "Курьер" is hidden (no_warehouse): Не создано ни одного склада. Начало строки на английском, причина — по-русски, в конце строки.

Когда причина найдена, выключите «Логирование»: в журнал пишется много данных.
Все причины, по которым способ скрыт #
Причины перечислены в том порядке, в каком плагин их проверяет. В кавычках — текст причины в журнале и в красной строке.
| Причина | Что сделать |
|---|---|
| Способ выключен, не добавлен в зону или адрес покупателя не попадает в эту зону | Проверьте зону и способ в «WooCommerce → Настройки → Доставка». Если адрес не подходит ни под одну зону, WooCommerce вообще не спрашивает плагин |
| В адресе нет страны | Плагин считает доставку, только когда страна указана. Проверьте, что поле «Страна» есть на оформлении заказа или в магазине одна страна продажи |
| «лицензия плагина не действует. Введите или продлите ключ на странице лицензий: …» | Введите или продлите ключ в «Woodev → Лицензии» |
| Сумма заказа вне ограничений, заданных в способе, например «сумма заказа ниже минимума метода (от …)» | Это стандартные поля «Минимальная сумма заказа» и «Максимальная сумма заказа» способа. Поменяйте их или очистите |
| «Настройки метода из версии 1 ещё не перенесены: откройте админ-панель, плагин перенесёт их сам» | Откройте любую страницу админки. Перенос требует действующей лицензии — см. «Переход с версии 1.x» |
| «Не создано ни одного склада» | Добавьте склад: «Woodev → Настройки» → «Расчёт за расстояние» → «Склады» |
| «Не заданы цены» | Заполните хотя бы одну строку таблицы «Цены по расстоянию» в способе |
| «Не указан ключ DaData» | Вставьте ключ в «Woodev → Настройки» → «Доставка» → «Локация» → «Токен API DaData» |
| «DaData временно недоступна» | DaData не ответила или не приняла ключ: исчерпан дневной лимит, ключ неверный или почта в DaData не подтверждена. Проверьте кабинет DaData |
| «Адрес покупателя не найден» | DaData не нашла такой адрес. Обычно это адрес, набранный вручную с ошибкой. Попросите покупателя выбрать адрес из подсказок |
| «Адрес ближе первой строки таблицы цен» | В первой строке «От» больше 0, а покупатель ближе. Если хотите возить и рядом, поставьте «От» 0 |
| «Адрес дальше последней строки таблицы цен» | На классическом оформлении, когда других способов нет, покупатель видит «К сожалению, адрес находится за пределами зоны доставки». Если возите дальше, добавьте строку или оставьте «До» последней строки пустым |
| «Для этого расстояния выбрано «Не доставляем»» | Пояснение для покупателя то же, что в предыдущей строке. Снимите «Не доставлять», если возите на это расстояние |
| «Вес заказа больше допустимого» | На классическом оформлении, когда других способов нет, покупатель видит «К сожалению, общий вес выбранных вами товаров превышает тот, который мы можем отправить.» Увеличьте «Не доставлять тяжелее» или очистите его |
| «Правила зависят от времени в пути, а сервис расчёта расстояния недоступен» | Подключите сервис карт, проверьте его кнопкой «Проверить» на подвкладке «Сервисы» и выберите его в способе: по прямой время в пути не считается |
| «Сработало правило «Скрыть доставку»» | Найдите среди перенесённых правил то, у которого включено «Скрыть доставку», и проверьте его условия. Если способ нужно показывать, измените или удалите это правило |
| «Ни одно правило не подошло» | Проверьте условия перенесённых правил: адрес, вес, сумма или количество товаров не подходят ни под одно из них |
| «не удалось рассчитать стоимость доставки. Попробуйте позже или проверьте настройки службы доставки.» | Непредвиденный сбой при расчёте. Повторите позже; если не проходит — пришлите строку из журнала в поддержку |
Ещё три случая, когда способа нет, но это не ошибка:
- Корзина, адрес ещё не введён. Пока покупатель не указал ни города, ни улицы, цены нет: плагин не тратит запросы впустую.
- Корзина, включено «Не показывать на странице корзины». Способ появится на оформлении заказа.
- Перенесённые из 1.x правила зависят от времени в пути, а расстояние считается по прямой. По прямой время не считается. Подключите сервис карт и выберите его в способе.
Цена есть, но «примерная» #
Пока покупатель не указал номер дома, плагин знает адрес только до улицы или населённого пункта и считает от этой точки. Тогда под способом стоит пометка «Стоимость указана примерная, для точного расчёта укажите ваш точный адрес». Когда DaData определит координаты адреса до дома, цена пересчитается и пометка исчезнет. Иногда адрес остаётся примерным и при указанном номере дома: тогда пометка сохраняется, а при включённом «Требовать точный адрес» оформить заказ этим способом нельзя.
- В корзине, где обычно есть только город, цена почти всегда примерная.
- Где показывать пометку, вы выбираете в поле «Примерная стоимость» способа: под способом, под общим списком или нигде.
- Чтобы не принимать заказы без номера дома, включите «Требовать точный адрес». Тогда покупатель видит «Укажите точный адрес доставки с номером дома — от него зависит стоимость доставки.», и заказ с примерной ценой не оформится.
- Если адрес склада выбран без номера дома, все расстояния от него тоже приблизительные: плагин предупреждает об этом при сохранении склада.
В заказе в строке «Точность» записано «точный» или «примерный».
Цена не та, что ожидалась #
- Проверьте расстояние в заказе — строка «Расстояние». Затем найдите строку таблицы и посчитайте: «Стоимость» + «+ за км» × всё расстояние. Частая ошибка — ждать, что «+ за км» умножается только на километры сверх начала строки.
- Проверьте округление. При «Округлять до целого км вверх» 10,1 км считаются как 11 км.
- Проверьте строку «Сервис» в заказе. Если там «По прямой (резерв: … недоступен)», сервис карт в этот момент не ответил, и расстояние посчитано по прямой с коэффициентом дороги. Что делать, рассказано в части «Сервисы расчёта расстояния и ключи».
- Проверьте коэффициент дороги («коэф.» на подвкладке «Сервисы»), если считаете по прямой.
- Проверьте стандартные правила цены — наценку, округление, минимальную и максимальную стоимость доставки. Они меняют цену после таблицы.
- Проверьте вес товаров, если включена доплата за вес.
Частые вопросы #
Что будет, если сервис карт не ответит? #
Расстояние посчитается по прямой с вашим коэффициентом дороги. Доставка появится, если для этого расстояния и веса есть подходящая цена; перенесённые правила, которым нужно время в пути, без ответа сервиса могут скрыть способ доставки. То же произойдёт, если исчерпан «Лимит в сутки». В заказе в строке «Сервис» будет «По прямой (резерв: …)». Если сервис не принял ключ или отключён, а способы им пользуются, в админке появится красное уведомление.
Как не получить неожиданный счёт от сервиса карт? #
Задайте «Лимит в сутки» в строке сервиса на подвкладке «Сервисы». После него новые запросы к сервису до конца суток не отправляются: сохранённые маршруты используются, пока не истечёт срок, а для остальных адресов расстояние считается по прямой. Кроме того, плагин помнит уже посчитанные маршруты и при нескольких складах строит маршрут только от одного.
Как задать разные цены для разных районов или городов? #
Сделайте отдельные зоны доставки и в каждой — свой способ «Стоимость за расстояние» со своей таблицей, складом и сервисом.
Почему в способе доставки нет нужного сервиса? #
В списке «Расчёт расстояния» только «По прямой» и подключённые сервисы. Вставьте ключ в строку сервиса на подвкладке «Сервисы», нажмите «Проверить», затем «Сохранить».
Покупатель не может выбрать свой город. Почему? #
Скорее всего, включён режим «Доставка в городе». Он оставляет в поле «Населённый пункт» только ваши места — для покупателей из стран вашего списка и для всех служб доставки магазина. Если возите и в этот город, добавьте его в список. Если режим не нужен, выключите «Доставка в пределах города». Подробнее — в части «Доставка в городе».
Включил «Доставку в городе», а поле у покупателя осталось обычным #
Проверьте лицензию: без неё режим не работает. Проверьте, что в списке есть место в стране покупателя и что эта страна есть в «Доставке в страны». Если на сайте блочное оформление заказа и удалён ключ DaData, поле остаётся текстовым — верните ключ. Причину плагин пишет вверху подвкладки «Доставка в городе».
Можно ли возить с разных складов по разным ценам? #
Да. Сделайте два способа доставки, в каждом выберите свой склад и заполните свою таблицу. Если цена одна, а склад должен выбираться сам, поставьте в способе «Ближайший к покупателю».
Для разработчиков #
Плагин сохранил хуки версии 1.x с теми же названиями и аргументами:
woocommerce_shipping_range_rate_is_available— доступность способа;woocommerce_shipping_range_rate_get_customer_address_string— части адреса покупателя для поиска на карте;woocommerce_range_rate_shipping_calculated_distance($km,$metres) — расстояние после округления, до поиска цены;woocommerce_range_rate_shipping_label_suffix($suffix,$km,$package) — текст в скобках после названия способа;woocommerce_range_rate_shipping_rule_cost_calculationи фильтры отдельных условий — для правил, перенесённых из 1.x.
Новые хуки версии 2:
woodev_range_rate_warehouse_for_package($warehouse,$package,$destination) — склад, от которого считается расстояние;woodev_range_rate_distance_result($result,$provider_id) — посчитанное расстояние;woodev_range_rate_grid_cost($cost,$km,$package) — цена из таблицы с доплатой за вес, до стандартных правил цены;woodev_range_rate_distance_fallback($provider_id,$reason) — действие: расстояние посчитано по прямой вместо сервиса;woodev_range_rate_distance_providers— подключить свой сервис расчёта расстояния;woodev_range_rate_ors_base_url— адрес своего сервера OpenRouteService.
Ключи сервисов можно задать константами в wp-config.php — список в части «Сервисы расчёта расстояния и ключи».
Остались вопросы? #
Напишите в поддержку — она входит в лицензию. Если пишете о скрытом способе доставки, приложите строку из журнала: так мы ответим быстрее.