WooCommerce Distance Rate Shipping - Плагин WordPress
Расширения WooCommerce Distance Rate Shipping позволяют вам легко предлагать тарифы на доставку в зависимости от расстояния или общего времени в пути для вашего клиента.

Особенности плагина
Плагин разработан для автоматизации расчетов стоимости доставки на основе расстояния для пользователей WooCommerce, предлагая надежное решение для эффективной и точной обработки разнообразных потребностей в доставке. С помощью использования данных о местоположении пользователи могут настраивать индивидуальные тарифы доставки, которые динамически корректируются в зависимости от расстояния между магазином и клиентом. Этот функциональный инструмент позволяет онлайн-бизнесам реализовывать гибкие стратегии доставки, улучшая удовлетворенность клиентов и оптимизируя логистические операции без сбоев в экосистеме WooCommerce.
Специально разработанный для WooCommerce, функционал WooCommerce Distance Rate Shipping позволяет бизнесам определять несколько тарифных зон в зависимости от параметров расстояния, обеспечивая универсальный подход к управлению доставкой и методами оплаты. С его интуитивным интерфейсом пользователи могут легко настраивать отрезки расстояний и соответствующие тарифы, гарантируя прозрачный и простой процесс расчета стоимости доставки для клиентов. Это совершенствование в установке повышает общий опыт пользователей, способствуя доверию и удовлетворенности онлайн-покупателей.
Интегрировавшись надежно с платформой WooCommerce, плагин обеспечивает совместимость с различными методами доставки и сервисами курьерских служб, облегчая унифицированный и связный рабочий процесс доставки для онлайн-магазинов разного масштаба. Способность плагина обрабатывать сложные сценарии доставки, такие как доплаты или скидки в зависимости от расстояния, оснащает продавцов инструментами, необходимыми для эффективной реализации сложных правил доставки. Эта адаптивность повышает оперативную эффективность и способствует плавному процессу покупок для клиентов.
Одной из ключевых особенностей является функциональность расчета расстояния в реальном времени, которая использует геолокационные данные для точного определения тарифов доставки на основе местоположения клиента относительно магазина. Этот динамический подход обеспечивает точность стоимости доставки и отражает фактическое пройденное расстояние, предлагая прозрачность и надежность в процессе ценообразования. Автоматизируя корректировку тарифов на основе расстояния, бизнесы могут оптимизировать операции доставки и предоставить клиентам точные расчеты стоимости на этапе оформления заказа, укрепляя доверие и лояльность.
Более того, плагин предлагает расширенные возможности настройки, позволяющие пользователям точно настраивать правила доставки на основе таких факторов, как вес товара, размеры или стоимость заказа совместно с тарифами, зависящими от расстояния. Этот мелкий контроль позволяет бизнесам настраивать стратегии доставки в соответствии со своими конкретными потребностями, эффективно адаптируя разнообразные каталоги продуктов и требования к доставке. Благодаря своему мощному набору функций и гибким возможностям настройки, данный плагин выделяется как ценный актив для магазинов WooCommerce, стремящихся оптимизировать свои процессы доставки и обеспечить исключительный опыт для клиентов.
Спецификации:
| Дата выхода: | 11-10-2020 | |
| Дата обновления: | 20-05-2026 | |
| Тип расширения: | Платный | |
| Лицензия: | GPL | |
| Тематика: | Интернет-коммерция для WooCommerce | |
| Совместимость: | W5.x W6.x | |
| Включает в себя: | Плагин | |
| Языковые пакеты: |
|
|
| Разработчик: | WooCommerce Plugins | |
| Рейтинг: | ||
Скачивание по подписке!
Вам необходимо авторизоваться на сайте и приобрести клубную подписку!
Поделись с друзьями!
Руководство по настройке WooCommerce Distance Rate Shipping для доставки по расстоянию
WooCommerce Distance Rate Shipping нужен магазину тогда, когда обычная фиксированная доставка перестаёт быть честной: ближайший покупатель переплачивает, дальний покупатель получает слишком дешёвую доставку, а владелец магазина вручную компенсирует разницу. В этом руководстве разберём не рекламное описание расширения, а рабочую схему: что проверить перед установкой, как подключить Google API, куда добавить метод доставки, как построить правила по расстоянию, времени в пути, весу, количеству и сумме корзины, как проверить результат на checkout и где искать причину, если ставка не появилась.
Материал написан для администратора WooCommerce, который уже понимает базовую доставку через зоны, но хочет настроить доставку по реальному расстоянию или времени поездки. Здесь есть практический пример для локальной доставки, блок диагностики, рекомендации по безопасной проверке и сравнение с похожими решениями.
Точные версии, состояние совместимости и спорные источники вынесены в служебные файлы. В самой статье мы не привязываем процесс к датам, потому что настройки доставки важнее конкретного релиза, а совместимость перед внедрением всё равно нужно сверять на странице продукта.
Когда доставка по расстоянию лучше обычной фиксированной ставки
Обычная ставка доставки хорошо работает, когда стоимость логистики почти не меняется от адреса покупателя. Например, магазин отправляет посылки через одну службу, тарифы заранее известны, а региональная разница уже учтена в зонах WooCommerce. Для локальной доставки, аренды оборудования, готовой еды, мебели, цветов, тяжёлых товаров и выездного сервиса ситуация другая: расходы зависят от маршрута, пробега, времени курьера и иногда от веса или количества позиций в заказе.
WooCommerce Distance Rate Shipping закрывает именно этот разрыв. Расширение добавляет метод доставки в shipping zone и рассчитывает ставку на основе маршрута от указанного адреса отправления до адреса покупателя. Правила можно строить по расстоянию, общей длительности поездки, количеству товаров, весу и сумме корзины. Это полезно, когда доставка должна выглядеть на checkout не как условная "местная доставка", а как понятная ставка, рассчитанная по заданным условиям.
Типовые сценарии, где расширение уместно
Самый понятный сценарий - локальный магазин с собственной доставкой. Покупатель вводит адрес, WooCommerce определяет подходящую зону, метод Distance Rate получает маршрут и показывает стоимость. Если покупатель далеко, метод можно не показывать или можно вывести ошибку отсутствия доставки через настройку диапазонов.
- Доставка еды, полуфабрикатов, цветов, напитков и других товаров, где курьер едет от одной точки выдачи.
- Аренда оборудования, когда доставка зависит не только от расстояния, но и от количества комплектов в заказе.
- Локальный магазин мебели, техники или строительных материалов, где вес и удалённость дают разные расходы.
- Сервисные товары с выездом, если покупателю нужно сразу увидеть ориентировочную стоимость доставки или выезда.
- Гибридная схема: близкие адреса получают бесплатную или дешёвую доставку, дальние адреса оплачивают каждый километр или милю сверх первого диапазона.
Когда лучше не начинать с этого расширения
Расширение не заменяет полноценную транспортную интеграцию, печать этикеток, подбор коробок, правила по складам или тарификацию перевозчика. Если магазин отправляет заказы через UPS, DHL, FedEx, почтового оператора или агрегатора, и ставка должна зависеть от реального тарифа перевозчика, нужен live rate plugin или сервис фулфилмента. Distance Rate полезен, когда ставка доставки - это ваша собственная бизнес-логика, а Google API нужен только для расстояния или времени пути.
Есть ещё один важный предел. По отзывам пользователей и официальной документации видно, что базовая ценность расширения - правила по маршруту и корзине. Если вам нужно умножать ставку по отдельным категориям, учитывать несколько точек отправления на уровне отдельных товаров или строить сложную логику по каждому складу, заранее проверьте, можно ли решить это Advanced Mode, отдельными shipping zones или кастомной доработкой. Не стоит внедрять доставку по расстоянию как универсальный калькулятор всей логистики магазина, если фактически нужна система управления доставкой.
Что проверить перед установкой
Перед установкой важно не только убедиться, что сайт технически подходит. Нужно подготовить данные, без которых расчёт будет выглядеть случайным: корректный адрес отправления, включённые зоны WooCommerce, понятные диапазоны расстояний, заполненные веса товаров, рабочая страница checkout и доступ к Google Cloud. Если пропустить этот этап, ошибка часто всплывает уже на оформлении заказа, когда покупатель видит "нет доступных способов доставки".
Платформа, зоны и checkout
Плагин работает как shipping method внутри WooCommerce, поэтому сначала проверьте базовую доставку. В админ-панели откройте WooCommerce > Settings > Shipping > Shipping zones и убедитесь, что у вас есть зона для региона, где будет доступна доставка по расстоянию. WooCommerce выбирает первую зону, которой соответствует адрес покупателя, поэтому узкие локальные зоны должны стоять выше широких региональных зон.
Если магазин использует Cart and Checkout blocks, отдельно проверьте совместимость расширения на странице продукта WooCommerce. У WooCommerce есть механизм маркировки совместимости расширений с блоковой корзиной и checkout, и для этого продукта совместимость заявлена на странице Marketplace. Но это не отменяет тестового заказа: тема, дополнительные плагины checkout, кеш и кастомные поля адреса могут менять поведение.
Google Cloud и цена ошибки
Distance Rate Shipping обращается к Google Maps Platform, а актуальная документация указывает на Routes API как основной путь для новых установок. Google Cloud аккаунт с биллингом обязателен, потому что API-запросы могут тарифицироваться Google. Это не значит, что каждый небольшой магазин сразу получит крупные расходы, но значит, что ключ нельзя оставлять без контроля.
Перед запуском на живом сайте включите бюджетные уведомления в Google Cloud и сохраните доступ к проекту у владельца магазина, а не у случайного подрядчика. Если ключ потеряется или останется у бывшего исполнителя, диагностика доставки станет намного сложнее.
Адрес отправления и качество адресов покупателей
Расчёт расстояния зависит от пары "origin - destination". В настройках метода указывается shipping address, откуда магазин отправляет заказ. Это может быть адрес магазина, кухни, склада, пункта выдачи или другой фактической точки. Если магазин показывает один юридический адрес, а доставка едет с другого склада, используйте склад. Документация также допускает Google Plus Code в первой строке адреса, что полезно для точек без обычного почтового адреса.
На стороне покупателя критичны поля адреса. Если checkout скрывает штатное поле адреса, меняет порядок страны и индекса или собирает адрес через нестандартный виджет, метод может не получить нормальный destination. Для теста подготовьте несколько реальных адресов: близкий, средний, дальний и адрес за пределами зоны доставки.
Данные корзины
Если правила будут учитывать вес, количество или сумму корзины, заранее проверьте товары. У физических товаров должен быть корректный вес, а переменные товары не должны терять вес на уровне вариации. Если вы хотите использовать сумму корзины, решите, считать ли порог до скидки или после неё в вашем бизнес-процессе. В документации Distance Rate правила ориентируются на cart total value как условие, а детали налогов и скидок лучше проверять тестовым заказом на конкретном сайте.
Установка и первая проверка в WordPress
Установка расширения типична для платного продукта WooCommerce. После получения ZIP-файла его можно загрузить через Plugins > Add New > Upload Plugin и активировать. Не нужно реализовывать отдельную авторизацию в проекте сайта: расширение работает внутри обычной админ-панели WordPress и WooCommerce.
После активации не ожидайте, что новый метод сразу появится покупателю. WooCommerce shipping methods не работают сами по себе вне shipping zone. Сначала нужно подключить API, затем добавить метод в нужную зону, затем настроить правила и только после этого делать тестовый заказ.
Мини-проверка после активации
- Откройте
WooCommerce > Settings > Shippingи убедитесь, что появилась страницаDistance Rateдля API и debug-настроек. - Проверьте, что сайт видит активный WooCommerce и физические товары не отключены настройками доставки.
- Откройте список shipping zones и выберите зону, где метод должен работать.
- Добавьте метод доставки только в одну тестовую зону, чтобы не смешивать результаты с другими регионами.
- Создайте тестовый товар с понятным весом и ценой, если реальный каталог слишком сложен для первого теста.
Такой короткий тест снижает шум. Если метод не появляется даже в админке зоны, проблема не в Google API, а в установке, совместимости или правах. Если метод добавился, но не выводится на checkout, переходите к зонам, адресу, правилам и debug mode.
Подключение Routes API и безопасная настройка ключа
Ключ Google API - самая частая точка ошибок, потому что он одновременно влияет на работоспособность и безопасность. Документация WooCommerce указывает путь WooCommerce > Settings > Shipping > Distance Rate, где выбирается API Type, вводится API Key и включается Debug Mode. Для новой установки выбирайте Routes API, потому что legacy Distance Matrix API уже не рекомендуется для новых пользователей.
Какие API включить
Для актуальной схемы включите Routes API. В официальной инструкции также упоминается Maps Embed API, а для legacy-сценариев - Distance Matrix API. Если магазин уже давно использовал старый тип API, переход лучше планировать отдельно: обновить расширение, сменить API Type, сохранить настройки и проверить несколько адресов.
После сохранения ключа в настройках Distance Rate должен появиться признак успешного подключения. Если его нет, не переходите к правилам доставки. Сначала проверьте проект Google Cloud, включённые API, биллинг и ограничения ключа.
Почему HTTP referrer restrictions могут мешать
Важная особенность: расширение отправляет запросы к Google Maps API с сервера сайта, а не из браузера посетителя. Поэтому ограничения ключа по домену через HTTP referrer могут не сработать и привести к ошибкам вида blocked referrer. Более надёжный вариант, если хостинг даёт статический исходящий IP, - ограничение по IP сервера плюс API restrictions только на нужные сервисы. Если статического IP нет, ключ может работать без application restriction, но это повышает риск, поэтому бюджетные уведомления и контроль доступа к Google Cloud становятся обязательными.
Когда включать Debug Mode
Debug Mode нужен не постоянно, а на время проверки. Он помогает увидеть API-вызовы на cart или checkout и понять, почему расстояние не рассчиталось. На рабочем сайте включайте debug на короткое время, лучше в период низкой нагрузки или на staging-копии. После диагностики отключите его, чтобы не показывать лишние технические сведения покупателям и не усложнять интерфейс оформления заказа.
Добавление метода в shipping zone и базовые параметры
Метод доставки настраивается внутри конкретной shipping zone. Это принципиально: одна и та же логика Distance Rate может быть уместна для локальной зоны и полностью лишней для остальной страны. Откройте WooCommerce > Settings > Shipping > Shipping zones, выберите нужную зону, нажмите Add shipping method, выберите Distance Rate Shipping и затем откройте редактирование метода.
Если покупатель вводит адрес, который попадает в другую зону, он не увидит этот метод. Поэтому при тестировании всегда фиксируйте адрес и проверяйте, какая зона должна сработать. Для локальной доставки удобно создать узкую зону: город, регион или набор индексов. В WooCommerce порядок зон имеет значение, и более точная зона должна стоять выше общей.
Параметры метода, которые нужно пройти до правил
До создания тарифных правил настройте базовые поля метода. Они определяют, что увидит покупатель и как Google будет считать маршрут.
| Параметр | Как использовать | Что проверить |
|---|---|---|
Method Title |
Название способа доставки на cart и checkout. | Покупателю должно быть понятно, что это доставка курьером или локальная доставка. |
Tax Status |
Определяет, облагается ли ставка налогом. | Сверьте с налоговыми настройками магазина и тестовым заказом. |
Transportation Mode |
Тип передвижения, который используется для маршрута. | Выберите режим, соответствующий реальной доставке, а не самый дешёвый результат. |
Avoid |
Исключение платных дорог, хайвеев или паромов, если это важно для маршрута. | Не включайте ограничения без причины: они меняют маршрут и ставку. |
Distance Unit |
Метрическая или имперская система для расчёта расстояния. | Единицы должны совпадать с диапазонами в правилах. |
Show Distance и Show Duration |
Показывают покупателю расстояние и примерное время доставки. | Включайте, если это помогает доверию, и отключайте, если тема выводит слишком длинную строку. |
Shipping Address |
Адрес отправления, откуда считается маршрут. | Проверьте фактический склад или точку выдачи, а не только юридический адрес. |
После настройки базовых полей сохраните метод, но пока не считайте работу завершённой. Без Distance Rate Rules метод не сможет дать осмысленную ставку. Правила - это место, где бизнес-логика превращается в цену.
Правила расстояния, времени и корзины без пересечений
Distance Rate Rules - главный рабочий экран расширения. Здесь задаются диапазоны и действия: сколько брать за базу, сколько добавлять за единицу расстояния или минуты, что делать с количеством, где остановить обработку правил и когда отключить метод. Ошибка в диапазонах часто незаметна в админке, но сразу проявляется на checkout: ставка слишком высокая, слишком низкая или не выводится вообще.
Из чего состоит правило
У каждого правила есть condition. Документация перечисляет расстояние, общее время поездки, количество товаров, вес и сумму корзины. Для каждого условия задаются Min и Max. Пустой предел можно использовать, когда верхняя или нижняя граница не нужна. Для времени диапазоны указываются в минутах.
Base Cost задаёт фиксированную часть ставки. Cost Per Distance / Minute добавляет стоимость за расстояние или время. Unit определяет, считать по distance или travel time. Handling Fee добавляет фиксированную сумму или процент. Multiply by Qty умножает стоимость на количество, если это действительно нужно для логистики.
Почему диапазоны не должны пересекаться
Официальная документация прямо предупреждает, что ranges cannot overlap. Если первый диапазон заканчивается на 10, а второй начинается тоже с 10, это пересечение. Правильнее делать границы вроде 1-9.9 и 10-24.9 либо использовать понятную дискретную сетку, которая исключает двусмысленность. Для километров и миль заранее решите, нужна ли десятичная точность, и держите один стиль во всех правилах.
Практическое правило: сначала нарисуйте тарифную сетку в таблице вне WordPress, затем перенесите её в админку. Так проще увидеть дырки и пересечения до того, как покупатель столкнётся с ошибкой.
Break и Abort: две разные логики
Break останавливает дальнейший поиск правил ниже текущего, если условие выполнено. Это полезно, когда найден нужный тариф и дополнительные нижние правила не должны добавлять стоимость. Abort отключает этот shipping method, если условие выполнено. Его удобно использовать для ограничений, например когда доставка дальше заданного радиуса не предлагается.
Не смешивайте их по привычке. Если задача - "посчитать ставку и больше ничего не добавлять", нужен Break. Если задача - "вообще не показывать доставку при этом условии", нужен Abort. После любого изменения делайте тест с адресом внутри диапазона, на границе и за границей.
Advanced Mode для комбинированных условий
Advanced Mode позволяет группировать условия через AND и OR. Это важно для сценариев, где расстояние само по себе недостаточно. Например, можно сделать бесплатную доставку для близких покупателей только при достаточной сумме корзины, или отдельную ставку, если покупатель далеко либо заказ тяжёлый.
Используйте AND, когда должны выполниться все условия группы. Используйте OR, когда достаточно любого из условий. Если логика становится трудно читаемой, разбейте её на две shipping zones или отдельные методы с понятными названиями. Покупатель не должен видеть три почти одинаковых способа доставки, а администратор не должен гадать, почему сработал именно этот тариф.
Тарифные сценарии для веса, количества и суммы корзины
У Distance Rate Shipping есть важная особенность: расстояние не обязано быть единственным условием. Для многих магазинов настоящая стоимость доставки складывается из двух частей. Первая часть - маршрут курьера. Вторая часть - сложность самого заказа: тяжёлый товар, несколько коробок, высокий чек, который магазин готов субсидировать, или количество позиций, которое увеличивает время погрузки. Если учитывать только расстояние, ставка будет честной по маршруту, но всё равно может быть убыточной по заказу.
Не нужно сразу строить сложную систему. Начните с одной базовой логики, затем добавляйте второе условие только там, где оно реально влияет на расходы. Чем больше правил, тем важнее тестовая матрица и понятные названия методов. Хорошая настройка доставки должна объясняться одним предложением: "до ближайшего района бесплатно, дальше ставка за километр, тяжёлые заказы получают надбавку". Если объяснение превращается в длинную формулу, администратору будет трудно поддерживать правила после изменения цен.
Когда учитывать вес
Вес полезен для мебели, напитков, строительных смесей, техники, коробок с книгами и любых товаров, где водитель или курьер тратит больше ресурсов на погрузку. Но вес работает только при чистом каталоге. Если у половины товаров вес пустой, правило будет казаться случайным: одни корзины получат надбавку, другие нет. Перед запуском сделайте выгрузку товаров или выборочную проверку карточек, особенно вариаций.
Для простого магазина можно сделать два диапазона: обычный вес и тяжёлый заказ. В обычном диапазоне ставка строится по расстоянию. В тяжёлом диапазоне добавляется base cost или handling fee. Если тяжёлые товары требуют отдельного транспорта, лучше не прятать это в маленькую наценку, а создать отдельный понятный метод доставки или отдельную shipping zone, чтобы покупатель видел причину стоимости.
Когда учитывать количество товаров
Количество полезно не всегда. Если курьер везёт один пакет с тремя небольшими товарами, умножать доставку на количество несправедливо. Но если каждый товар - отдельный комплект аренды, отдельный контейнер или отдельная единица, требующая погрузки, Multiply by Qty может быть оправдан. Пример из официальной страницы продукта с арендой оборудования показывает именно такую логику: цена зависит от удалённости и количества комплектов.
Проверьте, что покупатель не получает неожиданный рост ставки из-за мелких аксессуаров. Если в корзине есть основной товар и сопутствующие расходники, прямое умножение на quantity может завысить доставку. В таком случае лучше использовать вес, shipping class или отдельную бизнес-логику, а не простое умножение.
Когда учитывать сумму корзины
Сумма корзины удобна для маркетинговой логики: близким покупателям с крупным заказом можно дать бесплатную доставку, а дальним оставить платный маршрут. В Advanced Mode это выражается через AND: distance находится в нужном диапазоне и cart total value превышает порог. Это лучше, чем общая free shipping без учёта адреса, потому что магазин не субсидирует дорогую дальнюю доставку.
Если у магазина много купонов, скидок и налоговых правил, протестируйте несколько заказов с разной суммой. Важно понять, какой именно итог используется в вашем сценарии и как он выглядит для администратора в заказе. Не обещайте покупателям бесплатную доставку "от суммы", пока не проверили, что скидка не меняет ожидаемое условие.
| Задача магазина | Подходящее условие | Риск настройки |
|---|---|---|
| Курьерская доставка по городу и пригородам. | Distance или total travel time. | Ошибки в адресе и пересечение диапазонов. |
| Доставка тяжёлых коробок или мебели. | Distance плюс weight. | Незаполненные веса товаров и вариаций. |
| Аренда нескольких комплектов оборудования. | Distance плюс item count или quantity multiplier. | Случайное умножение доставки на мелкие аксессуары. |
| Бесплатная доставка для близких крупных заказов. | Advanced Mode с distance и cart total value через AND. |
Неясное влияние скидок и купонов на итоговую сумму. |
| Запрет доставки за пределы радиуса. | Distance с максимальным значением или Abort. |
Путаница между реальным маршрутом и расстоянием по прямой. |
Хороший способ не ошибиться - записать каждое правило в формате "если - то". Например: "если distance до 10 км и сумма корзины выше порога, ставка 0"; "если distance от 10.1 до 25 км, базовая ставка плюс цена за километр"; "если weight выше порога, добавить handling fee". После этого сравните порядок правил в админке с этой схемой. Если порядок в WordPress не совпадает с логикой, исправьте его до тестов.
Практический сценарий: локальная доставка с бесплатным первым диапазоном
Разберём реальный сценарий. Магазин доставляет готовые наборы еды из одной кухни. В пределах ближайшего радиуса доставка бесплатная, дальше покупатель платит за каждый километр, а за пределами зоны доставка не предлагается. Это типовая задача для WooCommerce Distance Rate Shipping, потому что логика зависит от маршрута, а не только от индекса или города.
Цель и подготовка
Цель - показать покупателю один понятный способ доставки, который меняет стоимость в зависимости от адреса. Для подготовки нужны активный WooCommerce, настроенная локальная shipping zone, корректный адрес кухни, подключённый Routes API и тестовый товар. Если используются блоковые Cart and Checkout pages, проверьте, что метод отображается в стандартном checkout без дополнительных кастомных полей адреса.
Шаги настройки
- Создайте или откройте локальную shipping zone, например город и ближайшие районы.
- Добавьте в неё метод Distance Rate Shipping и назовите его так, чтобы покупатель понял способ доставки, например "Курьерская доставка по адресу".
- Укажите фактический адрес кухни или склада в поле
Shipping Address. - Выберите единицы расстояния, которые будете использовать в правилах, и не меняйте их после создания диапазонов без пересчёта тарифов.
- Создайте первое правило по distance с диапазоном бесплатной доставки и
Base Costравным нулю. - Создайте второе правило для следующего диапазона и задайте
Cost Per Distance / Minuteдля платной части. - Если нужно не брать оплату за первый бесплатный диапазон внутри второго правила, используйте отрицательный fixed cost по формуле из документации: стоимость за единицу умножается на бесплатный диапазон и вычитается из расчёта.
- Добавьте правило для предельной дистанции или используйте максимальный диапазон так, чтобы адрес за пределами зоны не получал доступную ставку.
- Сохраните настройки и перейдите к тестовым заказам.
Главный нюанс в этом сценарии - граница диапазонов. Если бесплатная доставка действует до 10 км, платный диапазон не должен начинаться снова с 10 км. Иначе на границе возможна неоднозначность. Используйте 0-10 и 10.1-25 либо другую понятную сетку.
Проверка результата
Создайте тестовую корзину и пройдите checkout с адресом рядом с origin. Метод должен показать нулевую или минимальную ставку. Затем используйте средний адрес и проверьте, что ставка выросла. В конце используйте дальний адрес за пределами доставки: метод должен исчезнуть или WooCommerce должен показать отсутствие доступной доставки, в зависимости от того, как вы построили правила и зоны.
Если результат не совпал, не меняйте сразу все правила. Сначала включите Debug Mode, проверьте рассчитанное расстояние, затем проверьте shipping zone и только потом правьте тарифную сетку. Такой порядок быстрее, чем случайное изменение диапазонов.
Как проверить ставку на checkout и в заказе
Проверка не заканчивается тем, что метод появился на checkout. Нужно убедиться, что ставка понятна покупателю, корректно попадает в order totals, не конфликтует с бесплатной доставкой и не исчезает при изменении адреса, количества или веса. Для WooCommerce это особенно важно: доставка участвует в расчёте налогов, итогов заказа, писем и админского просмотра заказа.
Матрица тестов для администратора
Сделайте не один тестовый заказ, а маленькую матрицу. В ней должны быть адреса внутри зоны, на границе диапазона, за пределом доставки, заказ с минимальной суммой, заказ с большим количеством и заказ с весом, если вес участвует в правилах. Для каждого теста фиксируйте ожидаемый результат до проверки. Иначе легко начать подгонять правила под случайно увиденную ставку.
- Близкий адрес: метод есть, ставка соответствует первому диапазону.
- Граничный адрес: нет пересечения диапазонов, ставка не удваивается.
- Дальний адрес: метод скрывается или показывает ожидаемое отсутствие доставки.
- Тяжёлый заказ: срабатывает весовое условие, если оно задано.
- Большая сумма корзины: срабатывает скидка или бесплатная доставка, если это построено через Advanced Mode.
- Смена адреса на checkout: стоимость обновляется после пересчёта доставки.
Что смотреть в заказе
После оформления тестового заказа откройте его в админ-панели WooCommerce. Проверьте название shipping method, стоимость доставки, налоговую часть, общий итог и адрес доставки. Если в магазине включён HPOS, сам факт совместимости расширения указан на странице продукта, но всё равно проверьте сохранение заказа и работу писем. HPOS меняет хранение заказов, а не бизнес-логику доставки, но любой магазин с расширениями должен тестировать полный путь заказа.
Проверка темы и кеша
Если стоимость меняется в классическом checkout, но странно ведёт себя в кастомном оформлении заказа, временно переключитесь на стандартную страницу checkout или отключите надстройки, которые меняют поля адреса. Кеш страниц checkout и cart обычно должен быть исключён из полного кеширования. Если кеш отдаёт старую версию блока доставки, покупатель может видеть неактуальную ставку или отсутствие метода.
Безопасная доработка логики без правки файлов плагина
Большинство магазинов должны обходиться настройками расширения. Но иногда нужна небольшая бизнес-правка, которую невозможно выразить обычными правилами или которую удобнее держать в коде. Официальная документация показывает фильтр woocommerce_distance_rate_shipping_rule_cost_distance_shipping для изменения стоимости правила. Используйте такой подход осторожно: через child theme, Code Snippets или небольшой mu-plugin, но не через редактирование файлов расширения.
Пример ниже делает доставку бесплатной, если заказ дороже заданного порога и адрес находится в пределах короткой дистанции. Это не универсальный рецепт для всех магазинов, а ориентир по безопасной структуре. Если Advanced Mode уже закрывает вашу задачу, код не нужен.
add_filter( 'woocommerce_distance_rate_shipping_rule_cost_distance_shipping', function( $rule_cost, $rule, $distance, $package ) {
// Бесплатная доставка для близкого адреса и крупной корзины.
$order_total = $package['contents_cost'];
if ( $order_total > 100 && $distance <= 5 ) {
$rule_cost = 0;
}
return $rule_cost;
}, 10, 4 );
После добавления snippet сделайте три теста: заказ ниже порога, заказ выше порога рядом с магазином и заказ выше порога, но дальше допустимой дистанции. Откат простой: отключить snippet и очистить кеш checkout, если он используется. Не добавляйте код, пока не можете объяснить, какой вход, какая логика и какой результат должны получиться.
Частые проблемы и диагностика
Ошибки в доставке по расстоянию обычно выглядят одинаково для покупателя: ставка не появилась, стоимость странная или checkout сообщает, что доставка недоступна. Для администратора причины разные: Google API, shipping zones, диапазоны, адреса, кеш, совместимость checkout или конфликт с другим shipping plugin. Диагностику лучше вести сверху вниз.
На странице настроек появляется ошибка авторизации Google API
Симптом: в настройках Distance Rate отображается сообщение, что Google Maps Platform отклонила запрос или проект не авторизован для нужного API. Причина: не включён нужный API, выбран legacy API без нужных сервисов, не включён биллинг или ключ ограничен способом, который не подходит серверным запросам.
Проверьте проект Google Cloud, включите Routes API и Maps Embed API, убедитесь, что биллинг активен, затем сохраните ключ заново. Если ключ ограничен по HTTP referrer, замените стратегию: серверные запросы не работают как браузерные. При статическом исходящем IP используйте IP restriction и API restrictions на нужные сервисы.
Метод не показывается на checkout
Симптом: покупатель вводит адрес, но Distance Rate Shipping отсутствует среди способов доставки. Причина: адрес попал не в ту shipping zone, метод не добавлен в выбранную зону, правило не совпало с дистанцией или сработал Abort.
Сначала проверьте порядок shipping zones. WooCommerce выбирает первую подходящую зону, поэтому широкая зона выше локальной может перехватить покупателя. Затем проверьте, добавлен ли метод именно в эту зону. После этого включите Debug Mode и посмотрите, получил ли метод расстояние.
Стоимость слишком высокая или складывается несколько раз
Симптом: ставка больше ожидаемой, особенно при нескольких правилах или количестве товаров. Причина: нижние правила продолжают добавляться, включён Multiply by Qty без необходимости, handling fee задан процентом, а не фиксированной суммой, или диапазоны перекрываются.
Проверьте правила сверху вниз. Там, где тариф уже найден, используйте Break. Отключите Multiply by Qty, если доставка едет одним курьером и количество товаров не должно прямо умножать стоимость. Разделите handling fee и base cost: фиксированная наценка и цена за дистанцию должны быть понятны отдельно.
Граница радиуса работает непредсказуемо
Симптом: адрес на границе зоны иногда получает доставку, иногда нет, или соседние адреса дают разные тарифы. Причина: диапазоны пересекаются, маршруты считаются по дорогам, а не прямой линией, или адрес покупателя геокодируется не так, как ожидает магазин.
Не сравнивайте результат с радиусом по карте "по воздуху". Distance Rate ориентируется на маршрут. Сделайте диапазоны с безопасным зазором, например 0-9.9 и 10-24.9, и используйте реальные тестовые адреса. Если адресная база в регионе нестабильна, добавьте в checkout подсказку к полю адреса и проверяйте спорные точки вручную.
Бесплатная доставка конфликтует с другими способами
Симптом: покупатель видит одновременно бесплатную доставку, фиксированную доставку и distance rate, или выбирается не тот метод по умолчанию. Причина: в зоне активны несколько methods, а порядок и условия не согласованы. WooCommerce показывает доступные методы из выбранной зоны, если они не скрыты условиями.
Решите, должна ли Distance Rate заменять остальные методы или работать рядом с ними. Если нужно скрывать или ограничивать методы по условиям, используйте отдельные shipping zones, правила WooCommerce или специализированное расширение conditional shipping. Не пытайтесь решить всё названием метода.
После изменения адреса ставка не обновляется
Симптом: покупатель меняет адрес, но стоимость доставки остаётся прежней. Причина: checkout изменён сторонним плагином, страница кешируется, JavaScript пересчёта доставки не срабатывает или кастомное поле адреса не передаётся в WooCommerce shipping package.
Проверьте стандартный checkout без лишних расширений. Исключите cart и checkout из кеша. Если проблема только в кастомном checkout, ищите совместимость именно этого checkout-плагина с WooCommerce shipping methods и Store API.
FAQ по настройке WooCommerce Distance Rate Shipping
Нужен ли Google API ключ для работы расширения?
Да. Расширение использует сервисы Google Maps Platform для расчёта расстояния или времени маршрута. Для новой настройки ориентируйтесь на Routes API, включённый биллинг и корректные ограничения ключа. Без API метод не сможет надёжно рассчитать ставку.
Можно ли считать доставку не по километрам, а по времени в пути?
Да, правила могут использовать total travel time. Это удобно, когда расходы курьера больше зависят от времени поездки, чем от расстояния. Но помните, что время маршрута является оценкой, поэтому тарифную сетку нужно тестировать на реальных адресах.
Почему покупатель видит "нет доступных способов доставки"?
Чаще всего адрес попал в shipping zone без метода, правила Distance Rate не покрывают рассчитанную дистанцию, сработал Abort или API не вернул маршрут. Начинайте с порядка zones, затем проверяйте правила и только потом API.
Можно ли сделать бесплатную доставку рядом с магазином и платную дальше?
Да. Сделайте нулевое правило для первого диапазона и отдельное правило для следующего диапазона. Если платная часть должна начинаться только после бесплатного расстояния, используйте формулу с отрицательным fixed cost, как описано в документации, или проверьте, закрывает ли задачу Advanced Mode.
Подходит ли расширение для нескольких складов?
Обычный сценарий расширения строится вокруг указанного shipping address внутри метода. Если товары отправляются с разных складов или каждая позиция имеет собственную точку отправления, заранее проверяйте архитектуру. Возможно, понадобится отдельная логика, несколько зон, другой плагин или кастомная разработка.
Нужно ли показывать покупателю расстояние и длительность?
Это зависит от UX. Для локальной доставки показ расстояния может повысить доверие: покупатель понимает, откуда взялась цена. Если строка доставки становится слишком длинной или тема плохо её оформляет, отключите Show Distance или Show Duration и оставьте только понятное название метода.
Можно ли использовать расширение вместе с бесплатной доставкой WooCommerce?
Можно, но нужно решить, должны ли оба метода отображаться одновременно. Если бесплатная доставка должна заменять Distance Rate при определённых условиях, настройте зоны и условия так, чтобы покупатель не видел противоречивые варианты.
Повлияет ли плагин на SEO магазина?
Сам расчёт доставки не даёт SEO-эффекта. Косвенно он влияет на поведение покупателей: честная ставка на checkout снижает разочарование и количество брошенных корзин. Для индексации важнее скорость checkout, отсутствие ошибок и понятные страницы доставки, а не сам факт использования distance rate.
Когда WooCommerce Distance Rate Shipping будет удачным выбором
Используйте WooCommerce Distance Rate Shipping, если магазин доставляет из понятной точки, расходы действительно зависят от маршрута, а покупателю нужно видеть ставку до оформления заказа. Это расширение особенно хорошо подходит локальной доставке, аренде оборудования, магазинам еды, цветов, тяжёлых товаров и сервисам, где расстояние или время поездки напрямую влияет на себестоимость.
Перед внедрением проверьте три вещи: работает ли Google API ключ, правильно ли настроены shipping zones и покрывают ли правила реальные адреса покупателей. После этого сделайте тестовые заказы на близкий, граничный и дальний адрес. Если всё совпало, можно переходить к публикации на рабочем сайте и аккуратно отслеживать первые реальные заказы.
Когда будете готовы проверить расширение на своём магазине, можно скачать ZIP-архив и сначала развернуть его на staging-копии. Такой путь безопаснее, чем сразу менять доставку на живом checkout: вы увидите все ставки, ошибки API и конфликтующие методы до того, как с ними столкнутся покупатели.


