Не работает доставка в WooCommerce: почему нет способов доставки и как исправить
Покупатель добавил товар в корзину, дошёл до оформления заказа — и вместо привычных вариантов доставки видит «Нет доступных способов доставки» или пустой блок. Иногда доставка исчезает только для одного города, индекса или конкретного товара. В других случаях проблема появляется сразу после обновления WooCommerce, темы или плагина доставки.
Главное здесь — не менять всё подряд. WooCommerce выбирает доставку по цепочке: адрес покупателя → подходящая зона → методы внутри этой зоны → ограничения метода → содержимое корзины. Если понять, на каком звене цепочка обрывается, причина обычно находится быстрее.
Быстрая проверка: проблема у всех покупателей или только у части?
Сначала повторите ошибку в режиме инкогнито и используйте тот же адрес, который вводил покупатель. Затем проверьте ещё два адреса: один из вашего основного региона доставки и один из другой зоны.
Если доставка пропала только для конкретного города или индекса, вероятнее всего проблема в зоне, порядке зон или правилах почтовых индексов. Если вариантов нет вообще — проверяйте глобальные настройки доставки, активность методов, плагины и ошибки Checkout.
Что это значит: один тестовый адрес почти ничего не доказывает. Для доставки адрес — это входные данные, от которых WooCommerce выбирает дальнейший сценарий.
1. Проверьте, разрешена ли доставка в настройках WooCommerce
Откройте WooCommerce → Настройки → Основные и проверьте параметр «Местоположение(я) доставки». Магазин может быть настроен на доставку во все страны, только в выбранные страны либо вообще без доставки.
Если страна покупателя исключена на этом уровне, настройка отдельной зоны ниже ситуацию не исправит.
2. Проверьте зоны доставки и их порядок
Откройте WooCommerce → Настройки → Доставка → Зоны доставки. WooCommerce сопоставляет адрес покупателя с зонами сверху вниз и использует первую подходящую зону. Покупатель не собирает методы сразу из нескольких зон.
Из-за этого широкая зона, например «Россия», поставленная выше более точной зоны «Москва», может перехватить московский адрес. Если в первой зоне нет нужного метода, покупатель его не увидит.
Практический принцип: более узкие географические правила располагайте выше широких. Город или диапазон индексов — выше региона, регион — выше страны.
Отдельно проверьте «Местоположения, не охваченные другими зонами». Это резервная зона. Если в ней нет ни одного метода, покупатели, не совпавшие с вашими основными зонами, закономерно получат сообщение об отсутствии доставки.
3. Проверьте почтовые индексы
Очень частая причина — слишком узкое или ошибочное правило индекса. В WooCommerce можно задавать конкретные индексы, диапазоны и шаблоны с подстановочным символом. Одна лишняя цифра превращает рабочую доставку в географическую лотерею.
Проверьте реальный индекс покупателя посимвольно. Затем временно протестируйте тот же регион без ограничения по индексу. Если метод появился, причина найдена: проблема именно в условии зоны.
Не делайте так: не удаляйте рабочую зону на живом магазине ради проверки. Сначала зафиксируйте её настройки или проведите тест на staging-копии.
4. Убедитесь, что в зоне действительно есть активный метод
Наличие зоны ещё не означает наличие доставки. Внутри неё должен быть добавлен и включён хотя бы один метод: фиксированная ставка, бесплатная доставка, самовывоз или метод стороннего перевозчика.
Откройте нужную зону и проверьте статус каждого метода. Если используется сторонний модуль СДЭК, Boxberry, Почты, курьерской службы или агрегатора, дополнительно проверьте его собственные условия: API-ключ, регион отправления, габариты, вес, доступность тарифа и авторизацию.
5. Проверьте условия бесплатной доставки
Бесплатная доставка может зависеть от минимальной суммы заказа, купона или комбинации условий. Поэтому фраза «метод включён» ещё не означает «метод должен показываться для этой корзины».
Соберите контрольную корзину выше требуемой суммы и без купонов. Затем повторите тест с купоном. Так можно быстро отделить проблему зоны от проблемы условия бесплатной доставки.
6. Если доставка исчезает только с определённым товаром
Проверьте вес, размеры и класс доставки товара. Сторонние расчётчики часто используют эти данные для запроса тарифа. Нулевой вес, некорректные размеры или неподдерживаемый класс могут привести к тому, что перевозчик не вернёт ни одного тарифа.
Полезный тест: положите в корзину простой товар без класса доставки и специальных условий. Если с ним способы появляются, а с проблемным товаром исчезают, ищите ограничение на уровне товара, класса или плагина перевозчика.
Это хороший пример универсального правила диагностики: меняйте одну переменную за один тест. Иначе после пяти одновременных изменений невозможно понять, какое из них действительно помогло.
7. Учитывайте особенности Checkout Blocks
Современный WooCommerce активно использует блочные Cart и Checkout. Их логика отличается от классического shortcode Checkout, поэтому старый сниппет или расширение доставки может вести себя иначе после перехода на блоки.
В актуальных GitHub Issues WooCommerce в 2026 году зафиксированы проблемы, связанные с переключением Shipping/Local Pickup, валидацией адреса и отображением сообщения об отсутствии способов доставки ещё во время ввода индекса. Поэтому если настройки зон выглядят правильно, не стоит автоматически считать виноватым сервер.
Если видите это — вероятнее всего: доставка исчезла после замены классического Checkout на блоковый — проверяйте совместимость стороннего метода доставки и кастомного кода с Checkout Blocks.
8. Проверьте Console и Network в браузере
Откройте Checkout, нажмите F12 и посмотрите вкладки Console и Network. Ошибка JavaScript может остановить обновление блока доставки, а ответы 403, 429 или 500 укажут на блокировку запроса, лимит или серверную ошибку.
Если запрос расчёта тарифа уходит, но возвращается с ошибкой, это уже гораздо полезнее фразы «доставка не работает». У вас появляется конкретный запрос, HTTP-статус и время возникновения сбоя.
Если параллельно появляются серверные 500, используйте отдельный алгоритм диагностики ошибки 500 в WordPress, а не продолжайте менять настройки доставки вслепую.
9. Посмотрите журналы WooCommerce
Перейдите WooCommerce → Статус → Журналы. WooCommerce хранит системные записи, а многие плагины перевозчиков умеют отдельно логировать запросы к API и ответы сервиса.
Ищите записи, появившиеся в момент контрольного расчёта. Полезны сообщения об ошибках авторизации, неверном адресе, отсутствии тарифа, таймауте, некорректном весе или исключении PHP. Также проверьте журнал fatal-errors.
Если ошибка затрагивает весь Checkout, а не только доставку, сначала пройдите диагностику из материала почему не оформляется заказ в WooCommerce.
10. Кэш и оптимизация JavaScript тоже могут ломать расчёт
Корзина и Checkout содержат динамические данные. Агрессивное page caching, задержка JavaScript или объединение скриптов иногда вмешиваются в обновление адреса и способов доставки.
Проверьте исключения для корзины и Checkout в плагине кэширования и CDN. Затем очистите серверный кэш, кэш CDN и браузера. Не отключайте оптимизацию на всём сайте навсегда: сначала подтвердите, что именно она вызывает проблему.
Если одновременно перестала корректно обновляться корзина, полезен отдельный разбор почему товар не добавляется в корзину WooCommerce.
11. Проведите conflict test безопасно
Если зоны, товары и логи выглядят нормально, остаётся конфликт темы, плагина доставки, оптимизатора или кастомного кода. На staging-копии временно переключитесь на стандартную тему и отключите сторонние плагины, оставив WooCommerce и проверяемый модуль доставки.
Возвращайте расширения по одному и после каждого шага повторяйте один и тот же контрольный заказ. Так вы найдёте конфликт, а не просто получите случайно работающую комбинацию.
Когда пора остановиться: не проводите массовое отключение плагинов на работающем магазине, если идут реальные заказы. Можно сломать оплату, интеграцию с CRM, остатки, уведомления и фоновые процессы.
12. Когда нужен WP_DEBUG
Если в WooCommerce Logs есть PHP-ошибка или расчёт обрывается без понятного ответа, разработчик может временно включить WP_DEBUG_LOG и отключить вывод ошибок посетителям через WP_DEBUG_DISPLAY. WordPress рекомендует использовать отладку прежде всего в среде разработки и не оставлять её включённой без необходимости.
На рабочем магазине файл debug.log может содержать техническую информацию и быстро расти. Поэтому это уже не «попробуем поставить галочку», а диагностический инструмент, который включают на время конкретного теста.
Коротко: что делать сейчас
- Повторите проблему с реальным адресом покупателя.
- Проверьте разрешённые страны и зоны доставки.
- Проверьте порядок зон и правила индексов.
- Убедитесь, что в подходящей зоне активен метод.
- Проверьте вес, размеры и класс проблемного товара.
- Посмотрите Console, Network и WooCommerce Logs.
- Исключите кэш и оптимизацию Checkout.
- Conflict test проводите на staging, меняя по одной переменной.
FAQ
Почему WooCommerce пишет «Нет доступных способов доставки»?
Чаще всего адрес не совпал с зоной, в совпавшей зоне нет активного метода либо условия стороннего способа доставки не выполнены. Начните с адреса и зон, а не с переустановки WooCommerce.
Почему доставка работает для одного города, но не работает для другого?
Проверьте регионы зоны, порядок зон и ограничения по индексам. WooCommerce использует первую подходящую зону, поэтому более широкое правило может перехватывать адрес раньше нужного.
Почему доставка пропала после обновления WooCommerce?
Причиной может быть несовместимость плагина перевозчика, кастомного кода или Checkout Blocks. Сначала изучите логи и ошибки браузера, затем воспроизведите проблему на staging с минимальным набором плагинов.
Может ли кэш сломать доставку WooCommerce?
Да. Корзина и Checkout динамические, поэтому некорректное кэширование страниц или оптимизация JavaScript способны мешать обновлению адреса и тарифов. Проверяйте исключения для Cart и Checkout.
Что делать, если доставка не работает только у одного товара?
Сравните его вес, размеры, класс доставки и ограничения стороннего модуля с товаром, для которого расчёт работает. Это быстрее, чем менять настройки всего магазина.
Доставка всё ещё не работает?
Если диагностика дошла до PHP-ошибок, API перевозчика, конфликтов плагинов или серверной конфигурации, на рабочем магазине разумнее остановить эксперименты. Ошибка доставки уже влияет не только на интерфейс: покупатель физически не может завершить заказ, а неосторожное отключение расширений может затронуть оплату, остатки и интеграции.






