WP REST API — мощный инструмент, который позволяет взаимодействовать с сайтом WordPress через HTTP-запросы. Однако на практике нередко возникают ситуации, когда REST API перестаёт работать корректно: возникают ошибки 401, 403, 404 или 500, а внешние приложения и JavaScript-функции не могут получить данные. В этой статье подробно разберём, как диагностировать и устранить проблемы с WP REST API, приведём примеры кода и расскажем, какие плагины помогут в отладке.
Почему WP REST API может не работать: основные причины
WP REST API интегрирован в ядро с версии 4.7, и на большинстве сайтов он работает «из коробки». Тем не менее, проблемы могут возникать по разным причинам:
- Проблемы с аутентификацией и правами доступа. Например, запросы к защищённым эндпоинтам требуют корректных токенов или куки.
- Конфликты с плагинами безопасности или кеширования. Некоторые плагины блокируют REST API вызовы или изменяют заголовки.
- Ошибки в .htaccess или настройках сервера. Перезапись URL может работать неправильно.
- Проблемы с CORS (Cross-Origin Resource Sharing). Если сайт работает с внешними приложениями, необходимо правильно настроить заголовки.
- Ошибки в коде темы или плагинов, вызывающие фатальные ошибки при обработке REST запросов.
Диагностика проблем с WP REST API
Для начала нужно понять, где именно возникает ошибка. Используйте следующие инструменты и шаги:
1. Использование браузерной консоли и Network
Откройте инструменты разработчика в браузере (F12), перейдите во вкладку Network и сделайте запрос к REST API, например, https://site.ru/wp-json/wp/v2/posts. Обратите внимание на статус ответа и тело ошибки.
Если приходит статус 401 или 403 — проблема с доступом. 404 — endpoint недоступен. 500 — внутренняя ошибка сервера.
2. WP_DEBUG и логирование ошибок
В файле wp-config.php включите режим отладки:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);Это позволит сохранять ошибки в файл wp-content/debug.log. Просмотрите его после обращения к REST API.
3. Проверка конфликтов с плагинами и темой
Отключите все плагины, кроме тех, что необходимы для REST API (например, WPGPT из WPGPT), и переключитесь на стандартную тему (например, Twenty Twenty-One). Если API заработал, включайте по одному плагину, чтобы выявить конфликт.
Примеры кода для отладки и исправления проблем с REST API
1. Проверка прав доступа через фильтр
Иногда REST API блокируется из-за неправильных прав. Можно добавить в functions.php темы или в плагин этот код, чтобы временно разрешить доступ всем аутентифицированным пользователям:
function wpdebug_allow_rest_access_for_logged_in_users( $access ) {
if ( is_user_logged_in() ) {
return true;
}
return $access;
}
add_filter( 'rest_authentication_errors', 'wpdebug_allow_rest_access_for_logged_in_users' );Это поможет понять, связана ли проблема с аутентификацией.
2. Добавление заголовков CORS для внешних запросов
Если REST API вызывается из другого домена, добавьте в functions.php следующий код:
function wpdebug_add_cors_headers() {
header( 'Access-Control-Allow-Origin: *' );
header( 'Access-Control-Allow-Methods: GET, POST, OPTIONS' );
header( 'Access-Control-Allow-Credentials: true' );
}
add_action( 'rest_api_init', 'wpdebug_add_cors_headers', 15 );Обратите внимание, что для продакшена лучше указать конкретный домен вместо *.
3. Временное отключение плагинов безопасности для теста
Плагины, такие как Wordfence, iThemes Security, или Clearfy Pro могут блокировать REST API. Для диагностики отключите их или настройте исключения в их параметрах.
Полезные плагины для диагностики и восстановления REST API
- Health Check & Troubleshooting — позволяет запустить сайт в режиме устранения неполадок, отключая плагины и темы только для текущего пользователя без влияния на посетителей.
- Rest API Toolbox — помогает управлять доступом к REST API и просматривать активные эндпоинты.
- WPGPT — плагин с расширенными возможностями работы с REST API и интеграцией AI, полезен для тестирования и отладки сложных запросов. Подробнее — https://wpshop.ru/plugin/wpgpt/.
Дополнительные советы для предотвращения проблем с REST API
Чтобы минимизировать вероятность проблем в будущем, придерживайтесь следующих рекомендаций:
- Регулярно обновляйте ядро, темы и плагины. Обновления часто содержат исправления безопасности и совместимости.
- Используйте плагин Clearfy Pro для оптимизации и безопасности. Он позволяет тонко настраивать доступ к REST API и отключать ненужные эндпоинты — подробнее.
- Тестируйте сторонние плагины на локальной среде перед установкой. Так вы сможете избежать конфликтов.
- Проводите аудит безопасности и доступа. Используйте инструменты мониторинга и логирования запросов к REST API.
WP REST API — это мощный и важный инструмент для современного WordPress. Правильная диагностика и своевременное устранение проблем помогут сохранить его работоспособность и обеспечить интеграцию с внешними сервисами и приложениями.