Коротко: Ошибка REST API чаще всего вызвана конфликтом постоянных ссылок, проблемами с файлом .htaccess, блокировками безопасности или несовместимостью плагинов. Для восстановления проверьте доступность маршрута /wp-json/, обновите структуру ЧПУ и временно отключите подозрительные расширения.
ошибка REST API: Когда REST API WordPress перестаёт отвечать, привычный редактор блоков превращается в белое пятно, контактные формы перестают отправлять данные, а плагины теряют функциональность — всё из-за ошибки REST API. Разбираем, почему это происходит и как вернуть сайт в рабочее состояние без паники.
Основные причины
| Причина | Что это значит |
|---|---|
| Сброс постоянных ссылок | Стандартные настройки ЧПУ могут нарушить маршрутизацию REST API, поэтому WordPress не может найти нужный эндпоинт. |
| Ошибки в .htaccess | Повреждённый или отсутствующий файл .htaccess для Apache или конфликт правил для Nginx ломает перезапись запросов к REST API. |
| Плагины безопасности или межсетевые экраны | Файрволы, Wordfence, iThemes Security или серверные правила могут преднамеренно или ошибочно блокировать доступ к /wp-json. |
| Несовместимые плагины | Некоторые плагины (кеширования, оптимизации, SEO) изменяют заголовки ответов, включают REST API или переопределяют эндпоинты, вызывая ошибки. |
| Смешанное содержимое или неправильный сертификат | Несовпадение протоколов (HTTP против HTTPS) при обращении к REST API может приводить к ошибкам CORS или блокировке запросов. |
| Явное отключение REST API | Код в functions.php темы или плагин, который целенаправленно отключает REST API для неавторизованных пользователей, может сломать редактор и AJAX-формы. |
| Неверные параметры веб-сервера | Некорректная настройка PHP, устаревшая версия или отсутствие модуля mod_rewrite на Apache останавливают обработку маршрутов. |
Что проверить сначала
- Перейдите по адресу /wp-json/wp/v2/posts — если видите JSON с данными, API работает, причина в клиентских скриптах.
- Проверьте консоль браузера (F12) на вкладке Console: красные ошибки вида REST API Disabled или 403 Forbidden укажут на блокировку.
- Включите режим отладки WordPress (WP_DEBUG true в wp-config.php), чтобы увидеть скрытые PHP-ошибки.
- Проверьте файл .htaccess в корне сайта: стандартные правила WordPress должны содержать RewriteEngine On и блок BEGIN WordPress.
- Временно переключите тему на стандартную (Twenty Twenty-Three) и проверьте, заработал ли редактор.
- Отключите все плагины безопасности и кеширования и повторите проверку эндпоинта.
- Убедитесь, что SSL-сертификат действителен и сайт открывается по HTTPS без предупреждений.
- Посмотрите настройки постоянных ссылок: выберите вариант Имя записи и сохраните дважды.
- Проверьте файл functions.php активной темы на наличие add_filter('rest_authentication_errors', …) или отключающих REST API функций.
Пошаговое решение
- Откройте раздел Настройки → Постоянные ссылки, выберите произвольную структуру, например /%postname%/, и нажмите Сохранить изменения. Если структура уже правильная, всё равно сохраните, чтобы сбросить кеш маршрутов.
- Проверьте файл .htaccess, добавьте стандартные правила WordPress: убедитесь, что файл содержит блок между # BEGIN WordPress и # END WordPress с правилами RewriteRule ^index.php$ — [L] и RewriteCond %{REQUEST_FILENAME} !-f.
- Если используете Nginx, добавьте в конфигурацию сервера правило try_files $uri $uri/ /index.php?$args и перезагрузите сервер.
- Деактивируйте все плагины через FTP, переименовав папку /wp-content/plugins/ в plugins_old, и проверьте, заработал ли REST API. Если да, включайте плагины по одному, чтобы найти виновника.
- Временно отключите плагины безопасности, такие как Wordfence, iThemes Security, All In One WP Security. Проверьте, не включена ли опция Отключить REST API для незарегистрированных пользователей.
- Проверьте файл wp-config.php на наличие константы DISALLOW_FILE_EDIT или ограничений для REST API. Если есть define('REST_API_ENABLED', false);, удалите или закомментируйте строку.
- Убедитесь, что сайт открывается по HTTPS без ошибок. В настройках укажите корректный URL с https. Если сайт работает по HTTP, REST API может быть заблокирован из-за политики безопасности.
- Очистите весь кеш: кеш браузера, кеш плагинов типа WP Rocket, W3 Total Cache, а также кеш на уровне сервера, например Redis.
- Проверьте, не блокирует ли хостинг доступ к wp-json через моды безопасности ModSecurity. Обратитесь к провайдеру или временно отключите ModSecurity через .htaccess, добавив SecFilterEngine Off.
- Включите альтернативный способ проверки: установите плагин Health Check & Troubleshooting, в режиме устранения неполадок проверьте REST API без постоянного отключения плагинов для посетителей.
Проверить ошибку WordPress
Введите ошибку WordPress, PHP, плагина, темы, REST API или кратко опишите проблему сайта.
FAQ
Как проверить, работает ли REST API на моём сайте?
Откройте браузер и введите https://вашсайт.com/wp-json/wp/v2/posts. Если увидите JSON с данными постов — API работает. Если ошибка 404, 403 или пустая страница — требуется исправление.
Почему редактор блоков пишет «Ошибка обновления. Ответ не является допустимым JSON»?
Это стандартное сообщение, когда REST API не отвечает или возвращает некорректные данные. Часто связано с блокировкой маршрута плагином безопасности или ошибками .htaccess.
Может ли кеширующий плагин сломать REST API?
Да, агрессивное кеширование страниц, минификация HTML или CSS могут повредить ответы API. Временно отключите кеширование и проверьте.
Восстановится ли работа форм после исправления REST API?
Если контактные формы используют AJAX и опираются на REST API (например, Contact Form 7 под капотом), то после восстановления API они снова заработают.
Что делать, если REST API отключён на уровне сервера?
Проверьте правила брандмауэра и файл .htaccess на наличие блокировок к wp-json. Если серверный WAF блокирует запросы, обратитесь в поддержку хостинга.
Можно ли продолжать пользоваться сайтом без REST API?
Без REST API редактор блоков не откроется, плагины, использующие современные методы загрузки, не заработают. Вы сможете писать посты только через классический редактор, но функциональность будет ограничена.
Итог
Восстановление REST API WordPress — это устранение препятствий на пути запросов к /wp-json/. Пройдите по цепочке от постоянных ссылок до серверных ограничений, и вы быстро вернёте редактор, формы и плагины в рабочее состояние. Регулярное обновление ядра, тем и плагинов, а также осторожная настройка безопасности предотвратят подобные сбои в будущем.