wpdebug.ru wordpress WP Debug

Решение проблем с нерабочим WP REST API в WordPress

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. Правильная диагностика и своевременное устранение проблем помогут сохранить его работоспособность и обеспечить интеграцию с внешними сервисами и приложениями.

×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙