REST API в WordPress — мощный инструмент, который позволяет создавать гибкие и масштабируемые приложения, взаимодействующие с сайтом на базе WordPress. В этой статье мы подробно рассмотрим, как настроить и использовать REST API для решения практических задач, включая примеры запросов и создание собственных эндпоинтов.
Что такое REST API в WordPress и зачем он нужен
WordPress REST API — это интерфейс, который позволяет получать и изменять данные сайта через HTTP-запросы. Это открывает возможности для создания мобильных приложений, SPA (Single Page Applications), интеграций с внешними системами и кастомных административных панелей без необходимости напрямую работать с базой данных или PHP-кодом.
API работает по стандарту REST, что делает его понятным и совместимым с большинством современных технологий и языков программирования.
Основные преимущества использования REST API:
- Многообразие форматов данных, преимущественно JSON;
- Универсальный доступ к контенту, пользователям, метаданным и настройкам;
- Возможность расширения и создания собственных эндпоинтов;
- Поддержка аутентификации и авторизации запросов.
Как отправлять запросы к REST API WordPress
По умолчанию WordPress предоставляет множество стандартных эндпоинтов, например:
/wp-json/wp/v2/posts— получение списка записей;/wp-json/wp/v2/pages— страницы;/wp-json/wp/v2/users— пользователи (требует аутентификации);/wp-json/wp/v2/categories— категории.
Для примера рассмотрим как получить список последних 5 постов с помощью fetch в JavaScript:
fetch('https://wpbe.ru/wp-json/wp/v2/posts?per_page=5')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Ошибка:', error));Ответ будет в формате JSON, содержащий массив объектов с данными постов.
Для выполнения POST, PUT, DELETE запросов, например, создания новой записи, потребуется аутентификация, обычно через OAuth, JWT или базовую авторизацию.
Аутентификация в REST API WordPress
Без аутентификации можно только читать публичный контент. Для изменения данных нужно подтвердить права пользователя. Популярные методы:
- JWT Authentication — современный и безопасный метод, реализуемый через плагин
jwt-auth. - Basic Authentication — простой метод для разработки, но не рекомендуется для продакшена.
Пример настройки JWT:
- Установите и активируйте плагин
JWT Authentication for WP REST API. - Добавьте в
.htaccessили конфигурацию сервера необходимые правила. - Выполните запрос для получения токена:
POST https://wpbe.ru/wp-json/jwt-auth/v1/token
{
"username": "ваш_логин",
"password": "ваш_пароль"
}В ответе получите token, который нужно использовать в заголовке авторизации всех последующих запросов:
Authorization: Bearer ваш_токенСоздание кастомных REST API эндпоинтов в WordPress
Для расширения функционала часто требуется создавать свои собственные маршруты и обработчики. Это делается с помощью функции register_rest_route.
Рассмотрим пример. Допустим, нужно создать эндпоинт, который возвращает все посты определённого автора по его ID.
add_action('rest_api_init', 'wpbe_register_custom_routes');
function wpbe_register_custom_routes() {
register_rest_route('wpbe/v1', '/author-posts/(?P<id>\d+)', [
'methods' => 'GET',
'callback' => 'wpbe_get_author_posts',
'permission_callback' => '__return_true',
]);
}
function wpbe_get_author_posts($request) {
$author_id = $request['id'];
$args = [
'author' => $author_id,
'post_status' => 'publish',
'posts_per_page' => 10,
];
$posts = get_posts($args);
if (empty($posts)) {
return new WP_Error('no_posts', 'Посты не найдены', ['status' => 404]);
}
$data = [];
foreach ($posts as $post) {
$data[] = [
'id' => $post->ID,
'title' => $post->post_title,
'link' => get_permalink($post->ID),
];
}
return rest_ensure_response($data);
}После добавления кода в файл functions.php вашей темы или в плагин, доступ к новым данным можно получить по адресу:
https://wpbe.ru/wp-json/wpbe/v1/author-posts/123, где 123 — ID автора.
Полезные плагины для работы с REST API WordPress
Для удобства разработки и расширения REST API в WordPress рекомендуем обратить внимание на следующие плагины:
- WP REST API Controller — позволяет управлять видимостью полей и эндпоинтов без кода.
- JWT Authentication for WP REST API — добавляет поддержку JWT аутентификации для безопасных запросов.
- ACF to REST API — расширяет стандартные эндпоинты, добавляя данные из Advanced Custom Fields.
- WPGraphQL — альтернативный API для запросов данных, если нужен GraphQL вместо REST.
Обработка ошибок и безопасность в REST API
При работе с REST API важно правильно обрабатывать ошибки и защищать данные. Вот несколько рекомендаций:
- Используйте
WP_Errorдля возврата ошибок с понятными сообщениями и HTTP-статусами. - Обязательно проверяйте права доступа в
permission_callbackпри регистрации маршрута. - Ограничивайте количество возвращаемых данных для предотвращения перегрузки.
- Используйте HTTPS для шифрования трафика между клиентом и сервером.
Пример проверки прав доступа для авторизованных пользователей:
function wpbe_permission_check() {
return is_user_logged_in();
}
register_rest_route('wpbe/v1', '/secure-data', [
'methods' => 'GET',
'callback' => 'wpbe_get_secure_data',
'permission_callback' => 'wpbe_permission_check',
]);Заключение: как эффективно использовать REST API WordPress
REST API — это современный стандарт для обмена данными между WordPress и внешними приложениями. Освоив базовые запросы, аутентификацию и создание собственных эндпоинтов, вы сможете создавать сложные, быстрые и удобные решения.
Использование REST API освобождает от необходимости писать сложные SQL-запросы и позволяет строить масштабируемую архитектуру с разделением фронтенда и бэкенда.
Начинайте с изучения стандартных эндпоинтов, затем переходите к созданию своих маршрутов, не забывая про безопасность и обработку ошибок.