REST API в WordPress — мощный инструмент, который позволяет взаимодействовать с сайтом извне, создавать собственные приложения и расширять функционал без прямого доступа к базе данных или серверу. В этой статье мы разберем основы работы с REST API, рассмотрим популярные плагины для упрощения работы, а также приведем примеры собственных функций с пояснениями.
Что такое REST API в WordPress и зачем он нужен
REST API — это интерфейс программирования приложений, построенный на архитектуре REST, который позволяет обмениваться данными между клиентом и сервером по протоколу HTTP. В WordPress REST API реализован с версии 4.7 и позволяет получать, создавать, изменять и удалять данные сайта (посты, страницы, пользовательские типы записей и многое другое) через HTTP-запросы.
Основные преимущества использования REST API:
- Создание мобильных приложений, работающих с вашим сайтом;
- Разделение фронтенда и бэкенда (headless CMS);
- Интеграция с внешними сервисами и приложениями;
- Автоматизация управления контентом;
- Дополнительные возможности для разработчиков плагинов и тем.
Для начинающего разработчика понимание REST API открывает новые горизонты в создании сложных и гибких решений на базе WordPress.
Основные методы и эндпоинты WordPress REST API
REST API в WordPress построен вокруг стандартных HTTP-методов:
- GET — получение данных;
- POST — создание новых записей;
- PUT и PATCH — обновление существующих данных;
- DELETE — удаление данных.
Базовый URL для всех запросов обычно выглядит так:
https://ваш-сайт.ru/wp-json/wp/v2/
Например, чтобы получить список всех постов, нужно отправить GET-запрос на https://ваш-сайт.ru/wp-json/wp/v2/posts.
Для работы с пользователями используется эндпоинт users, для категорий — categories и т.д.
Пример запроса для получения постов с фильтрацией
Чтобы получить последние 5 опубликованных постов из категории с ID 7, используйте следующий URL:
https://ваш-сайт.ru/wp-json/wp/v2/posts?categories=7&per_page=5&status=publishОтвет приходит в формате JSON, что удобно для обработки на фронтенде или в приложении.
Плагины для расширения и упрощения работы с REST API
Хотя WordPress предоставляет мощный встроенный REST API, существуют плагины, которые помогают расширять функционал и упрощать работу с API.
1. WP REST API Controller
Позволяет управлять доступом к эндпоинтам, создавать пользовательские маршруты и контролировать разрешения без написания кода. Очень полезен для быстрого создания API без глубоких знаний.
2. Advanced Custom Fields (ACF) to REST API
Если вы используете плагин ACF для добавления пользовательских полей, этот плагин добавит их значения в REST API ответы, что упрощает работу с кастомными данными через API.
3. JWT Authentication for WP REST API
Для защиты данных и аутентификации по токенам JWT, что необходимо при создании мобильных приложений или защищенных запросов.
Как создать собственный эндпоинт REST API в WordPress (пример кода)
Часто возникает задача расширить стандартный API и добавить свои маршруты с кастомной логикой. Рассмотрим пример создания собственного эндпоинта, который будет возвращать список последних 3 комментариев на сайте.
function wplinks_register_comments_endpoint() {
register_rest_route('wplinks/v1', '/recent-comments/', array(
'methods' => 'GET',
'callback' => 'wplinks_get_recent_comments',
'permission_callback' => '__return_true', // Можно добавить проверку прав
));
}
add_action('rest_api_init', 'wplinks_register_comments_endpoint');
function wplinks_get_recent_comments() {
$comments = get_comments(array(
'number' => 3,
'status' => 'approve'
));
$data = array();
foreach ($comments as $comment) {
$data[] = array(
'author' => $comment->comment_author,
'content' => $comment->comment_content,
'post_id' => $comment->comment_post_ID,
'date' => $comment->comment_date
);
}
return rest_ensure_response($data);
}После добавления этого кода в файл functions.php вашей темы или плагина, вы сможете получить последние 3 комментария по адресу:
https://ваш-сайт.ru/wp-json/wplinks/v1/recent-comments/
Это простой, но наглядный пример создания собственного маршрута и обработки запроса.
Как работать с аутентификацией и безопасностью REST API
По умолчанию, многие эндпоинты REST API доступны публично для чтения данных. Однако для создания, обновления или удаления контента требуется авторизация.
Для стандартной авторизации можно использовать Cookie или OAuth, но для внешних приложений лучше подходит JWT или Basic Auth с SSL.
Пример интеграции JWT-аутентификации:
- Установите плагин «JWT Authentication for WP REST API».
- Настройте секретный ключ в файле wp-config.php:
define('JWT_AUTH_SECRET_KEY', 'ваш-секретный-ключ');- Отправляйте POST-запрос для получения токена:
POST https://ваш-сайт.ru/wp-json/jwt-auth/v1/token
{
"username": "ваш_логин",
"password": "ваш_пароль"
}- Используйте полученный токен в заголовках Authorization для последующих запросов.
Это гарантирует, что только авторизованные пользователи смогут изменять данные через API.
Практические советы и рекомендации при работе с WordPress REST API
Используйте кэширование
REST API может создавать нагрузку на сервер при частых запросах. Рекомендуется настроить кэширование ответов на уровне сервера или с помощью плагинов, например, WP Rocket или W3 Total Cache.
Ограничивайте доступ к чувствительным данным
Если вы создаете свои эндпоинты, всегда проверяйте права пользователей и не отдавайте приватную информацию без необходимости.
Тестируйте запросы с помощью инструментов
Postman, Insomnia и другие клиенты помогут отлаживать и тестировать запросы к REST API, особенно при работе с аутентификацией и сложной логикой.
Используйте возможности WordPress для сериализации данных
Для ответов используйте функцию rest_ensure_response() — она помогает правильно подготовить данные и заголовки.