REST API — один из важнейших компонентов WordPress. Он используется редактором Gutenberg, мобильными приложениями, WooCommerce, многочисленными плагинами, внешними сервисами и собственными интеграциями. Если REST API перестает работать, могут возникать ошибки публикации записей, невозможность сохранения страниц, проблемы с редактором блоков, а также сбои в работе интернет-магазина и других расширений. В этой статье рассмотрим наиболее распространенные причины ошибок REST API в WordPress, способы их диагностики и решения, а также приведем практические примеры кода.

Что такое REST API в WordPress

REST API — это программный интерфейс, позволяющий обмениваться данными между WordPress и внешними приложениями посредством HTTP-запросов. Стандартный адрес API выглядит следующим образом:
https://example.com/wp-json/ 
При корректной работе по этому адресу отображается JSON с информацией о доступных маршрутах.

Основные признаки ошибки REST API

  • редактор Gutenberg не сохраняет записи;
  • появляется сообщение «Обновление завершилось ошибкой»;
  • не работает предпросмотр публикаций;
  • WooCommerce сообщает об ошибках соединения;
  • редактор блоков отображает сообщение «REST API encountered an unexpected result»;
  • плагины не могут получать данные через API.

Проверка доступности REST API

Откройте в браузере:
https://example.com/wp-json/ 
Если отображается JSON-документ, REST API работает. WordPress ошибка REST API Если появляется ошибка 404, 403, 401 или 500 — необходимо искать причину.

Проверка через cURL

curl -I https://example.com/wp-json/ 
При успешном ответе сервер обычно возвращает:
HTTP/1.1 200 OK 

Причина 1. Неправильные постоянные ссылки

Поврежденные правила маршрутизации — одна из самых распространенных причин. Откройте:
Настройки → Постоянные ссылки 
Нажмите кнопку «Сохранить изменения», даже если ничего не менялось. WordPress автоматически пересоздаст правила маршрутизации.

Причина 2. Ошибка в файле .htaccess

Стандартный файл должен содержать:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> 

Причина 3. Конфликт плагинов

Некоторые плагины безопасности могут блокировать REST API. Порядок проверки:
  1. Отключите все плагины.
  2. Проверьте REST API.
  3. Включайте плагины по одному.
  4. Определите конфликтующее расширение.

Причина 4. Конфликт темы оформления

Временно активируйте стандартную тему WordPress. Если REST API заработал, проблема связана с текущей темой.

Причина 5. REST API отключен вручную

Проверьте файл functions.php. Если присутствует подобный код:
add_filter('rest_authentication_errors', '__return_true'); 
или
remove_action('rest_api_init'); 
его необходимо удалить или скорректировать.

Проверка работы REST API через PHP

<?php $response = wp_remote_get( home_url('/wp-json/') ); if (is_wp_error($response)) { echo $response->get_error_message(); } else { echo wp_remote_retrieve_response_code($response); } ?> 

Получение данных REST API

<?php $response = wp_remote_get( home_url('/wp-json/wp/v2/posts') ); $body = wp_remote_retrieve_body($response); echo $body; ?> 

Причина 6. Блокировка ModSecurity

Некоторые правила ModSecurity могут блокировать запросы к REST API. Проверьте журналы веб-сервера и временно отключите правило, вызывающее блокировку.

Причина 7. Неверная настройка Nginx

Конфигурация должна содержать обработку маршрутов WordPress:
location / { try_files $uri $uri/ /index.php?$args; } 

Причина 8. Ошибка SSL

REST API может не работать при неправильной настройке HTTPS. Проверьте значения:
WordPress Address Site Address 
Они должны использовать одинаковый протокол.

Проверка URL сайта

<?php echo home_url(); echo site_url(); ?> 

Причина 9. Блокировка Cloudflare или WAF

Если используется CDN или межсетевой экран, убедитесь, что запросы к следующим адресам не блокируются:
/wp-json/ /wp-json/wp/ /wp-json/wp/v2/ 

Причина 10. Ошибки авторизации

При ответе:
401 Unauthorized 
проверьте:
  • авторизацию пользователя;
  • JWT-токены;
  • Application Passwords;
  • настройки Basic Authentication.

Получение списка маршрутов REST API

<?php global $wp_rest_server; print_r( $wp_rest_server->get_routes() ); ?> 

Регистрация собственного маршрута

<?php add_action('rest_api_init', function () { register_rest_route( 'demo/v1', '/hello', array( 'methods' => 'GET', 'callback' => function () { return 'Hello World'; } ) ); }); ?> 
После этого маршрут будет доступен по адресу:
/wp-json/demo/v1/hello 

Проверка поддержки REST API

<?php if (function_exists('rest_get_server')) { echo "REST API работает"; } ?> 

Проверка журналов PHP

Если сервер отвечает ошибкой 500, проверьте журнал ошибок:
tail -f /var/log/php/error.log 
или
tail -f /var/log/nginx/error.log 

Включение режима отладки WordPress

Добавьте в файл wp-config.php:
define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); 
После этого ошибки будут записываться в файл:
wp-content/debug.log 

Типичные ошибки REST API

Ошибка Возможная причина
404 Неверные постоянные ссылки
401 Ошибка авторизации
403 Блокировка WAF, ModSecurity или плагином безопасности
500 Ошибка PHP или конфликт плагинов
503 Перегрузка сервера

Полезные рекомендации

  • используйте последнюю стабильную версию WordPress;
  • обновляйте PHP;
  • не отключайте REST API без необходимости;
  • регулярно проверяйте журналы ошибок;
  • используйте HTTPS;
  • тестируйте сайт после установки новых плагинов.

Чек-лист диагностики

  • ✓ Проверен адрес /wp-json/.
  • ✓ Пересохранены постоянные ссылки.
  • ✓ Проверен файл .htaccess.
  • ✓ Проверена конфигурация Nginx.
  • ✓ Временно отключены плагины.
  • ✓ Активирована стандартная тема.
  • ✓ Проверены журналы ошибок PHP.
  • ✓ Включен режим отладки WordPress.
  • ✓ Проверены настройки SSL.
  • ✓ Исключена блокировка со стороны WAF или ModSecurity.

Ошибки REST API в WordPress могут быть вызваны самыми разными причинами — от некорректных правил маршрутизации и конфликтов плагинов до проблем с веб-сервером, SSL или механизмами безопасности. Последовательная диагностика, проверка конфигурации Apache или Nginx, анализ журналов ошибок и тестирование API позволяют быстро определить источник проблемы и восстановить корректную работу сайта. Регулярное обновление WordPress, использование совместимых расширений и правильная настройка сервера помогут избежать подобных ошибок в будущем.

Метки: ,