WordPress REST API — это мощный инструмент, который позволяет взаимодействовать с сайтом на WordPress не только через стандартный интерфейс, но и через внешние приложения и сервисы. В этой статье мы подробно рассмотрим, как использовать REST API в WordPress, настроить собственные эндпоинты и получать данные в формате JSON. Это особенно полезно для разработчиков, которые хотят создать мобильные приложения, SPA (Single Page Application) или интегрировать WordPress с другими системами.
Что такое WordPress REST API и зачем он нужен
REST API (Representational State Transfer Application Programming Interface) — это интерфейс программирования, который позволяет обмениваться данными между клиентом и сервером по протоколу HTTP. В случае WordPress REST API вы можете получать, создавать, обновлять и удалять записи, страницы, пользователей и другие сущности через HTTP-запросы.
Основные преимущества REST API в WordPress:
- Универсальность — позволяет работать с сайтом из любого приложения, поддерживающего HTTP.
- Гибкость — можно создавать свои собственные эндпоинты для любых целей.
- Формат JSON — удобен для JavaScript и других языков программирования.
Это открывает новые возможности для разработки, например, создание кастомных фронтендов на React, Vue или мобильных приложений, которые работают с данными WordPress.
Как работать с REST API в WordPress — базовые запросы
WordPress уже имеет встроенные стандартные эндпоинты REST API для таких сущностей, как посты, страницы, категории, пользователи и т.д. Чтобы получить список последних записей, достаточно отправить GET-запрос на адрес:
https://ваш_сайт/wp-json/wp/v2/posts
Пример вывода — массив JSON с информацией о постах.
Можно также получить конкретный пост по ID:
https://ваш_сайт/wp-json/wp/v2/posts/123
Для создания, обновления или удаления записей необходимо авторизоваться, например, с помощью JWT или cookie авторизации.
Пример запроса с помощью fetch в JavaScript
fetch('https://ваш_сайт/wp-json/wp/v2/posts')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Ошибка:', error));Этот код получает список постов и выводит их в консоль браузера.
Создание собственного эндпоинта REST API в WordPress
Часто стандартных эндпоинтов недостаточно, и нужно создать кастомные методы для специфичных задач. Для этого WordPress предоставляет функцию register_rest_route.
Рассмотрим простой пример создания эндпоинта, который возвращает текущее время сервера.
add_action('rest_api_init', 'wpskill_register_custom_route');
function wpskill_register_custom_route() {
register_rest_route('wpskill/v1', '/time', array(
'methods' => 'GET',
'callback' => 'wpskill_get_server_time',
));
}
function wpskill_get_server_time() {
return array('time' => current_time('mysql'));
}Теперь при запросе https://ваш_сайт/wp-json/wpskill/v1/time вы получите JSON с текущим временем сервера.
Подробности регистрации эндпоинта
В функции register_rest_route первый параметр — это пространство имён и версия API (здесь 'wpskill/v1'). Второй — путь до метода (здесь '/time'). В массиве аргументов указываются HTTP методы и callback-функция.
Callback-функция должна возвращать данные, которые автоматически сериализуются в JSON.
Авторизация для защищённых эндпоинтов REST API
Если ваш эндпоинт должен изменять данные, например создавать или редактировать посты, необходима авторизация. В WordPress REST API по умолчанию используется cookie авторизация для админ-панели. Для внешних клиентов удобнее использовать JWT (JSON Web Token).
Пример плагина для JWT: JWT Authentication for WP REST API. После установки и настройки плагина вы можете получить токен, отправив POST-запрос с логином и паролем, а затем использовать токен в заголовке Authorization.
Authorization: Bearer ваш_токенЭто позволит безопасно работать с REST API из внешних приложений.
Пример создания поста через REST API с авторизацией
После получения токена можно создать новый пост, отправив POST-запрос на /wp-json/wp/v2/posts с заголовками и телом:
POST /wp-json/wp/v2/posts
Headers:
Authorization: Bearer ваш_токен
Content-Type: application/json
Body:
{
"title": "Новый пост через REST API",
"content": "Содержимое поста",
"status": "publish"
}В ответ получите JSON с информацией о созданном посте.
Полезные плагины для работы с REST API в WordPress
- WP REST API Controller — удобный интерфейс для настройки видимости и прав доступа к REST API для различных типов записей и таксономий.
- Advanced Custom Fields to REST API — расширяет REST API, добавляя поля ACF к стандартному выводу постов.
- JWT Authentication for WP REST API — реализует JWT авторизацию, о которой говорилось выше.
Использование этих плагинов значительно упрощает разработку и расширение возможностей REST API под свои задачи.
Советы и рекомендации при работе с REST API в WordPress
При разработке собственных эндпоинтов и работе с REST API учитывайте следующие моменты:
- Обязательно проверяйте права пользователя и авторизацию, чтобы не допустить несанкционированных действий.
- Используйте nonce или JWT для безопасности внешних запросов.
- Кэшируйте ответы, если данные не меняются часто, чтобы снизить нагрузку на сервер.
- Документируйте свои эндпоинты, чтобы другие разработчики и вы сами могли быстро понять структуру и назначение.
Таким образом, WordPress REST API — это мощный и гибкий инструмент, который при правильном использовании открывает массу возможностей для интеграции и разработки.