WordPress REST API открывает множество возможностей для разработчиков, позволяя взаимодействовать с сайтом через HTTP-запросы. В этой статье мы подробно разберём, как использовать REST API для создания собственных подключений и интеграций, рассмотрим примеры плагинов, а также приведём практические примеры кода, которые помогут вам быстро освоить эту технологию.
Что такое WordPress REST API и зачем он нужен
REST API (Representational State Transfer Application Programming Interface) — это интерфейс, который позволяет обмениваться данными между WordPress и внешними приложениями, используя стандартные HTTP-запросы (GET, POST, PUT, DELETE). Благодаря REST API вы можете создавать мобильные приложения, подключать сервисы аналитики, синхронизировать данные с внешними CRM или даже строить кастомные административные панели.
Раньше для подобных задач приходилось использовать XML-RPC или создавать сложные кастомные решения, теперь же REST API встроен в ядро WordPress и доступен из коробки.
Важным преимуществом является то, что API работает с JSON-форматом, который прост для обработки в JavaScript и других языках программирования.
Основные возможности WordPress REST API
С помощью REST API можно:
- Получать список записей, страниц, категорий и других стандартных типов записей.
- Создавать, обновлять и удалять записи (при наличии прав).
- Работать с пользовательскими типами записей и таксономиями.
- Управлять пользователями, комментариями и метаданными.
- Расширять функционал, создавая собственные конечные точки (endpoints).
Для примера, запрос GET /wp-json/wp/v2/posts вернёт список последних публикаций в формате JSON.
Как создать собственный REST API endpoint в WordPress
Иногда стандартных возможностей API недостаточно, и нужно добавить свои собственные маршруты. Ниже рассмотрим, как это сделать на примере функции wpstudy_register_custom_endpoint().
function wpstudy_register_custom_endpoint() {
register_rest_route('wpstudy/v1', '/hello/', array(
'methods' => 'GET',
'callback' => 'wpstudy_hello_endpoint',
'permission_callback' => '__return_true',
));
}
function wpstudy_hello_endpoint() {
return array('message' => 'Привет от wpstudy.ru REST API!');
}
add_action('rest_api_init', 'wpstudy_register_custom_endpoint');
Этот код создаёт новый endpoint /wp-json/wpstudy/v1/hello/, который возвращает простой JSON с сообщением. Обратите внимание на параметр permission_callback — здесь он разрешает всем обращаться к эндпоинту, но в реальных проектах стоит добавить проверку прав.
Как использовать собственный endpoint
Для вызова можно использовать любой HTTP клиент. Например, через браузер или curl:
curl https://example.com/wp-json/wpstudy/v1/hello/
Вы получите ответ:
{
"message": "Привет от wpstudy.ru REST API!"
}
Аутентификация и безопасность в REST API
Для операций, изменяющих данные, необходима аутентификация. WordPress поддерживает несколько способов:
- Cookie authentication: используется в браузере, когда пользователь залогинен в админке.
- Basic Authentication: простой метод с передачей логина и пароля в заголовках (подходит для разработки).
- OAuth 1.0a: более сложный, но безопасный протокол для интеграций.
- JWT (JSON Web Tokens): популярный метод для REST API, требующий отдельного плагина.
Для практической реализации JWT можно использовать плагин JWT Authentication for WP REST API. После настройки плагина, клиент может получить токен и использовать его для авторизации запросов.
Пример запроса с Basic Authentication
Для тестирования часто используют Basic Auth. Вот пример запроса на создание записи:
curl -X POST https://example.com/wp-json/wp/v2/posts \
-u 'admin:password' \
-H 'Content-Type: application/json' \
-d '{"title": "Новая запись через REST API", "status": "publish"}'
Полезные плагины для работы с REST API
Чтобы упростить работу с REST API, рекомендуем обратить внимание на следующие плагины:
- WP REST API Controller — позволяет управлять доступом к API, включая или отключая конечные точки и настраивая права.
- Advanced Custom Fields to REST API — добавляет данные ACF в ответ API, что полезно при работе с кастомным контентом.
- JWT Authentication for WP REST API — как уже упоминалось, реализует безопасную авторизацию через JWT.
Практический пример: создание кастомного типа записи с REST API поддержкой
Для полноты картины создадим собственный тип записи «Проекты» с поддержкой REST API, а также добавим к нему метаполе.
function wpstudy_register_projects_cpt() {
$args = array(
'label' => 'Проекты',
'public' => true,
'show_in_rest' => true, // Включаем поддержку REST API
'supports' => array('title', 'editor', 'custom-fields'),
);
register_post_type('project', $args);
}
add_action('init', 'wpstudy_register_projects_cpt');
// Регистрируем метаполе для REST API
function wpstudy_register_project_meta() {
register_post_meta('project', '_wpstudy_project_deadline', array(
'show_in_rest' => true,
'single' => true,
'type' => 'string',
'sanitize_callback' => 'sanitize_text_field',
));
}
add_action('init', 'wpstudy_register_project_meta');
Теперь можно создавать проекты через REST API, включая метаполе _wpstudy_project_deadline. Пример запроса на создание:
curl -X POST https://example.com/wp-json/wp/v2/project \
-u 'admin:password' \
-H 'Content-Type: application/json' \
-d '{
"title": "Запуск нового сайта",
"status": "publish",
"meta": {
"_wpstudy_project_deadline": "2024-12-31"
}
}'
Советы и лучшие практики при работе с REST API
При работе с REST API важно соблюдать несколько правил:
- Всегда проверяйте права доступа в
permission_callback, чтобы защитить данные. - Используйте nonce или токены для безопасной аутентификации.
- Планируйте структуру данных и кэширование, чтобы снизить нагрузку на сервер.
- Документируйте свои кастомные endpoint’ы — это поможет в поддержке и развитии проекта.
- Используйте стандартные методы HTTP и корректные коды ответов.
Заключение
WordPress REST API — мощный инструмент для расширения функционала вашего сайта и интеграции с внешними системами. Благодаря встроенной поддержке JSON и стандартным HTTP-методам, разработчики могут создавать гибкие и масштабируемые решения. Используйте примеры из этой статьи, чтобы начать создавать собственные подключения и интеграции уже сегодня.