WordPress REST API открыл огромные возможности для разработчиков, позволяя взаимодействовать с сайтом через HTTP-запросы и создавать сложные приложения поверх WordPress. В этой статье мы подробно разберем, как проверять работоспособность REST API, использовать его для создания собственных эндпоинтов и реализовывать аутентификацию. Также рассмотрим полезные плагины для расширения возможностей API.
Проверка доступности REST API в WordPress
Первый шаг — проверить, включен ли REST API на вашем сайте и корректно ли он работает. По умолчанию, начиная с версии 4.7, REST API включен в ядро WordPress.
Для проверки можно просто открыть в браузере следующий URL:
https://ваш-домен.ru/wp-json/
Если API работает, вы увидите JSON с общей информацией и зарегистрированными маршрутами. Если вместо этого получаете ошибку 404 или другую, возможно, REST API отключен или неправильно настроен.
Отключение REST API и способы включения
Иногда администраторы отключают API с помощью фильтров или плагинов. Например, чтобы проверить, не заблокирован ли API, проверьте наличие в теме или плагинах следующего кода:
add_filter('rest_enabled', '__return_false');Чтобы включить REST API, просто удалите или закомментируйте этот код.
Использование REST API для получения данных
REST API позволяет получать данные с сайта WordPress в формате JSON. Например, чтобы получить список последних постов, выполняем GET-запрос:
https://ваш-домен.ru/wp-json/wp/v2/posts
Ответ будет содержать JSON-массив с информацией о постах, включая заголовок, контент, дату и другие поля.
Фильтрация и параметры запроса
Можно использовать параметры для фильтрации результатов. Например, получить 5 последних опубликованных постов категории с ID 3:
https://ваш-домен.ru/wp-json/wp/v2/posts?categories=3&per_page=5&status=publish
Это удобно для интеграции с внешними приложениями или создания кастомных фронтендов.
Создание собственных REST API эндпоинтов в WordPress
Иногда стандартных эндпоинтов недостаточно, и нужна своя логика. Для этого можно регистрировать собственные маршруты.
Пример регистрации простого эндпоинта для вывода кастомного сообщения:
function expert_review_register_custom_route() {
register_rest_route('expert-review/v1', '/message/', array(
'methods' => 'GET',
'callback' => 'expert_review_custom_message_callback',
));
}
add_action('rest_api_init', 'expert_review_register_custom_route');
function expert_review_custom_message_callback() {
return array('message' => 'Привет от expert-review API!');
}Теперь по адресу /wp-json/expert-review/v1/message/ можно получить JSON с сообщением.
Регистрация эндпоинта с параметрами
Для передачи параметров используйте аргумент args:
function expert_review_register_param_route() {
register_rest_route('expert-review/v1', '/square/(?P<number>\d+)', array(
'methods' => 'GET',
'callback' => 'expert_review_square_callback',
'args' => array(
'number' => array(
'validate_callback' => 'is_numeric',
),
),
));
}
add_action('rest_api_init', 'expert_review_register_param_route');
function expert_review_square_callback($request) {
$number = intval($request['number']);
return array('result' => $number * $number);
}Это создаст эндпоинт, который возвращает квадрат переданного числа, например: /wp-json/expert-review/v1/square/5.
Аутентификация и безопасность REST API
Для получения или изменения данных, требующих прав, необходимо реализовать аутентификацию. WordPress поддерживает несколько методов: куки с nonce, Basic Auth, OAuth и JWT.
JWT аутентификация: настройка и пример
JWT (JSON Web Tokens) — популярный способ авторизации для REST API. Для его настройки можно использовать плагин JWT Authentication for WP REST API.
После установки и настройки плагина, запрос на авторизацию выглядит так:
POST https://ваш-домен.ru/wp-json/jwt-auth/v1/token
Content-Type: application/json
{
"username": "ваш_логин",
"password": "ваш_пароль"
}В ответ вы получите токен, который нужно передавать в заголовке Authorization для защищенных запросов:
Authorization: Bearer ваш_токенПример запроса для создания поста с использованием токена:
POST https://ваш-домен.ru/wp-json/wp/v2/posts
Content-Type: application/json
Authorization: Bearer ваш_токен
{
"title": "Новый пост через API",
"content": "Текст поста",
"status": "publish"
}Полезные плагины для работы с REST API в WordPress
- WP REST API Controller — удобный интерфейс для настройки доступа и полей API без кода.
- Advanced Custom Fields (ACF) to REST API — расширяет стандартные эндпоинты, добавляя пользовательские поля ACF.
- REST API Toolbox — набор инструментов для управления разрешениями и кэшированием API.
Эти плагины значительно упрощают настройку и управление REST API, особенно если вы не хотите писать много кода.
Советы по отладке и оптимизации REST API
Для отладки используйте такие инструменты, как Postman или curl. Пример запроса через curl:
curl https://ваш-домен.ru/wp-json/wp/v2/postsОбратите внимание на лимиты per_page, чтобы не перегружать сервер большими ответами.
Для ускорения работы рекомендуется кэшировать результаты запросов, например, используя Transients API или внешние кэш-системы.
Также следите за безопасностью — ограничивайте права доступа и используйте HTTPS.