WordPress REST API — мощный инструмент, который позволяет разработчикам создавать внешние приложения и интеграции с сайтами на WordPress. В отличие от классических методов взаимодействия с базой данных или внутренними PHP-функциями, REST API предоставляет стандартизированный и удобный способ получать, создавать, обновлять и удалять данные через HTTP-запросы.
Что такое WordPress REST API и зачем он нужен
REST API (Representational State Transfer Application Programming Interface) — это набор интерфейсов, позволяющих взаимодействовать с сайтом через HTTP-запросы. В WordPress он внедрен начиная с версии 4.7 и позволяет работать с постами, страницами, пользователями, таксономиями и многим другим.
Использование REST API актуально для:
- Создания мобильных приложений, которые получают данные с сайта WordPress;
- Интеграции с внешними сервисами и приложениями;
- Построения фронтендов на React, Vue или других JS-фреймворках, отделённых от бекенда;
- Автоматизации процессов управления контентом.
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— для категорий.
Пример запроса для получения списка постов:
GET https://wp-kit.ru/wp-json/wp/v2/postsОтвет будет JSON-массивом с объектами постов, содержащими заголовок, контент, дату и другие поля.
Обратите внимание, что для изменения данных (POST, PUT, DELETE) необходима авторизация, обычно через OAuth, JWT или встроенную cookie-сессию.
Расширение REST API: добавление своих эндпоинтов и полей
В большинстве случаев стандартных эндпоинтов недостаточно — нужно добавить собственные поля или создать новые маршруты. Для этого WordPress предоставляет функции регистрации REST маршрутов и полей.
Для регистрации собственного маршрута используется функция register_rest_route. Рассмотрим пример создания маршрута, который возвращает список последних 5 популярных постов (условие популярности — произвольное поле post_views_count):
add_action('rest_api_init', function() {
register_rest_route('wpkit/v1', '/popular-posts/', array(
'methods' => 'GET',
'callback' => 'wpkit_get_popular_posts',
));
});
function wpkit_get_popular_posts() {
$args = [
'posts_per_page' => 5,
'meta_key' => 'post_views_count',
'orderby' => 'meta_value_num',
'order' => 'DESC',
];
$query = new WP_Query($args);
$posts = [];
foreach ($query->posts as $post) {
$posts[] = [
'id' => $post->ID,
'title' => $post->post_title,
'link' => get_permalink($post),
'views' => get_post_meta($post->ID, 'post_views_count', true),
];
}
return $posts;
}Теперь по адресу /wp-json/wpkit/v1/popular-posts/ можно получить массив популярных постов в формате JSON.
Добавление кастомных полей в ответ REST API
Если у вас есть произвольные поля, которые нужно включать в стандартные ответы, регистрируйте их через register_rest_field:
add_action('rest_api_init', function() {
register_rest_field('post', 'post_views_count', [
'get_callback' => function($post) {
return get_post_meta($post['id'], 'post_views_count', true);
},
'schema' => null,
]);
});После этого в ответах на /wp-json/wp/v2/posts у каждого поста появится поле post_views_count.
Практические плагины для работы с REST API в WordPress
Для упрощения работы и расширения возможностей REST API можно использовать готовые плагины:
- WP REST API Controller — позволяет управлять доступом и настройками стандартных эндпоинтов;
- Advanced Custom Fields (ACF) to REST API — добавляет поля ACF в REST-вызовы;
- WP OAuth Server — добавляет поддержку OAuth 2.0 для безопасной авторизации;
- JWT Authentication for WP REST API — реализует авторизацию через JWT-токены.
Использование этих плагинов значительно упрощает разработку и интеграцию.
Примеры использования REST API на практике
Создание простого фронтенда на JavaScript
Допустим, нужно вывести последние 5 постов на отдельной странице без перезагрузки. Вот простой пример на чистом JS:
fetch('https://wp-kit.ru/wp-json/wp/v2/posts?per_page=5')
.then(response => response.json())
.then(data => {
const container = document.getElementById('posts-container');
data.forEach(post => {
const div = document.createElement('div');
div.innerHTML = `<h3>${post.title.rendered}</h3><p>${post.excerpt.rendered}</p>`;
container.appendChild(div);
});
});Такой подход подходит для статичных сайтов, SPA и гибких кастомных решений.
Обновление поста через REST API с авторизацией
Для обновления поста необходимо отправить PATCH-запрос с токеном авторизации. Пример на PHP с использованием JWT:
$post_id = 123;
$token = 'ваш_jwt_токен';
$data = [
'title' => 'Обновленный заголовок',
'content' => 'Новый контент поста'
];
$ch = curl_init("https://wp-kit.ru/wp-json/wp/v2/posts/{$post_id}");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"Authorization: Bearer {$token}"
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result);Без правильной авторизации сервер вернёт ошибку 401 или 403.
Советы по безопасности при работе с REST API
REST API открывает множество возможностей, но и требует внимания к безопасности:
- Ограничивайте права пользователей, которые могут создавать, изменять или удалять данные через API;
- Используйте безопасные методы авторизации (OAuth, JWT);
- Проверяйте и валидируйте данные на сервере;
- Отключайте ненужные эндпоинты, если они не используются;
- Следите за обновлениями WordPress и плагинов для своевременного устранения уязвимостей.
Заключение
REST API в WordPress — мощный и гибкий инструмент для создания современных веб-приложений и интеграций. Он значительно расширяет возможности платформы, позволяя создавать мобильные приложения, SPA, автоматизировать управление сайтом и многое другое. Использование стандартных и кастомных эндпоинтов, грамотная авторизация и безопасность — ключ к успешной работе с REST API.