WordPress уже давно перестал быть просто платформой для блогов — сегодня это мощная CMS, которую можно использовать как бэкенд для различных приложений. REST API в WordPress открывает большие возможности для разработчиков, позволяя создавать собственные интерфейсы, мобильные приложения или интегрировать сайт с внешними сервисами. В этой статье мы подробно рассмотрим, как работать с REST API WordPress, какие плагины помогут в разработке, а также приведём примеры кода для расширения функционала.
Что такое REST API в WordPress и зачем он нужен
REST API — это интерфейс взаимодействия с сайтом через HTTP-запросы, который возвращает данные в формате JSON. В WordPress он встроен из версии 4.7 и позволяет:
- Получать список записей, страниц, пользователей и других типов контента.
- Создавать, изменять и удалять записи через запросы.
- Интегрироваться с внешними приложениями — мобильными, SPA, десктопными.
Использование REST API открывает возможности для создания кастомных фронтендов на React, Vue или Angular, а также для автоматизации задач и построения сложных систем управления контентом.
Как работать с REST API WordPress: базовые запросы
Получение данных с помощью GET-запросов
Для получения данных достаточно отправить GET-запрос к нужному эндпоинту. Например, чтобы получить последние 10 записей блога, можно обратиться по адресу:
https://ваш-сайт.ru/wp-json/wp/v2/posts?per_page=10
В ответ придёт JSON-массив с объектами записей, включая заголовок, содержание, дату и другие поля.
Создание и обновление записей через POST и PUT
Для создания или изменения контента необходимы авторизация и правильные заголовки. Ниже пример отправки POST-запроса для создания новой записи через REST API с помощью PHP и библиотеки wp_remote_post:
$response = wp_remote_post('https://ваш-сайт.ru/wp-json/wp/v2/posts', [
'headers' => [
'Authorization' => 'Bearer ' . $token,
'Content-Type' => 'application/json'
],
'body' => json_encode([
'title' => 'Заголовок новой записи',
'content' => 'Текст записи через REST API',
'status' => 'publish'
])
]);
Для авторизации можно использовать JWT, OAuth или cookie авторизацию в зависимости от конфигурации.
Расширение REST API: добавление своих эндпоинтов и полей
Часто стандартный набор эндпоинтов не покрывает все задачи. WordPress позволяет создавать собственные маршруты и добавлять дополнительные поля к существующим объектам.
Регистрация нового эндпоинта
Добавим простой эндпоинт, который возвращает список последних 5 продуктов (если у вас WooCommerce). Пример кода в functions.php темы или плагине:
add_action('rest_api_init', function() {
register_rest_route('wpmarket/v1', '/latest-products', [
'methods' => 'GET',
'callback' => 'wpmarket_get_latest_products'
]);
});
function wpmarket_get_latest_products() {
$args = [
'post_type' => 'product',
'posts_per_page' => 5
];
$query = new WP_Query($args);
$products = [];
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$products[] = [
'id' => get_the_ID(),
'title' => get_the_title(),
'price' => get_post_meta(get_the_ID(), '_price', true)
];
}
wp_reset_postdata();
}
return $products;
}
Теперь запрос https://ваш-сайт.ru/wp-json/wpmarket/v1/latest-products вернёт JSON с последними товарами.
Добавление кастомных полей к существующим типам записей
Для добавления новых полей к ответам API используется функция register_rest_field. Например, добавим к записям поле с количеством просмотров:
add_action('rest_api_init', function() {
register_rest_field('post', 'view_count', [
'get_callback' => 'wpmarket_get_post_view_count',
'update_callback' => null,
'schema' => null
]);
});
function wpmarket_get_post_view_count($object) {
return (int) get_post_meta($object['id'], 'view_count', true) ?: 0;
}
Теперь у каждого объекта записи в REST API будет доступно поле view_count.
Полезные плагины для работы с REST API WordPress
Для удобства разработки и расширения функционала можно использовать следующие плагины:
- JWT Authentication for WP REST API — добавляет поддержку JWT-токенов для безопасной авторизации.
- WP REST API Controller — позволяет управлять, какие поля и типы записей доступны через API, без кода.
- Advanced Custom Fields (ACF) to REST API — интегрирует поля ACF в JSON-ответы REST API.
Эти инструменты значительно упрощают интеграцию и расширение стандартного REST API WordPress.
Практические советы и подводные камни при работе с REST API
Безопасность и авторизация
REST API открывает данные сайта внешним приложениям, поэтому важно правильно настроить авторизацию и права доступа. Используйте JWT или OAuth, ограничивайте права пользователей, не давайте доступа к чувствительным данным.
Кэширование ответов
Чтобы снизить нагрузку на сервер, стоит внедрять кэширование API-ответов, особенно если данные редко меняются. Это можно сделать на уровне сервера (Redis, Memcached) или с помощью плагинов.
Отладка и мониторинг
Для диагностики проблем с API используйте инструменты вроде Postman, а также логи сервера. Включайте WP_DEBUG для отлова ошибок и внимательно проверяйте права доступа.
Заключение
REST API WordPress — мощный инструмент для создания современных и гибких сайтов и приложений. Освоив базовые методы работы, расширение эндпоинтов и правильную авторизацию, вы сможете строить сложные интеграции и кастомные решения под любые задачи. Используйте предложенные примеры и плагины, чтобы ускорить разработку и повысить качество вашего кода.