WordPress с версии 4.7 включает мощный REST API, который позволяет создавать гибкие и расширяемые приложения на базе WordPress. Если вы веб-разработчик и хотите создавать собственные решения, взаимодействующие с вашим сайтом через API, то эта статья для вас.
Что такое REST API в WordPress и зачем он нужен
REST API — это архитектурный стиль взаимодействия по протоколу HTTP, который позволяет клиентам получать и отправлять данные на сервер с помощью стандартных методов: GET, POST, PUT, DELETE. В WordPress REST API открывает доступ к содержимому сайта в формате JSON, что облегчает интеграцию с мобильными приложениями, внешними сервисами и SPA (Single Page Applications).
Использование REST API упрощает задачи: автоматическое обновление данных на сайте, создание кастомных интерфейсов, интеграция с CRM и другими системами. Благодаря встроенным функциям WordPress вы можете быстро создавать собственные эндпоинты и расширять функционал.
Создание собственного REST API эндпоинта в WordPress
Для создания собственного REST API маршрута используется функция register_rest_route(), которую обычно вызывают в хуке rest_api_init. Рассмотрим, как добавить простой эндпоинт, который возвращает приветственное сообщение.
add_action('rest_api_init', 'wpreg_register_custom_route');
function wpreg_register_custom_route() {
register_rest_route('wpreg/v1', '/hello/', array(
'methods' => 'GET',
'callback' => 'wpreg_hello_endpoint',
));
}
function wpreg_hello_endpoint(WP_REST_Request $request) {
return array('message' => 'Привет из WPReg REST API!');
}Этот код добавляет эндпоинт /wp-json/wpreg/v1/hello/, который при GET-запросе отдает JSON с сообщением. Это базовый пример, с которого можно начать строить более сложные маршруты.
Обработка параметров запроса
Часто нужно обрабатывать параметры, переданные в запросе. Например, получим имя пользователя и вернем персональное приветствие.
function wpreg_hello_endpoint(WP_REST_Request $request) {
$name = $request->get_param('name');
if (!$name) {
$name = 'Гость';
}
return array('message' => 'Привет, ' . sanitize_text_field($name) . '!');
}Теперь запрос /wp-json/wpreg/v1/hello/?name=Иван вернет «Привет, Иван!».
Создание и управление кастомными типами данных через REST API
REST API автоматически поддерживает стандартные типы записей: посты, страницы, пользователи и т.д. Но что если у вас есть кастомный тип записи, например, «Отзывы»? Чтобы он был доступен через API, нужно при регистрации типа записи включить параметр 'show_in_rest' => true.
function wpreg_register_review_post_type() {
$args = array(
'label' => 'Отзывы',
'public' => true,
'show_in_rest' => true, // Включаем поддержку REST API
'supports' => array('title', 'editor', 'custom-fields'),
);
register_post_type('wpreg_review', $args);
}
add_action('init', 'wpreg_register_review_post_type');Теперь записи типа «Отзывы» доступны по REST API по адресу /wp-json/wp/v2/wpreg_review/. Вы можете использовать стандартные методы для получения, создания, редактирования и удаления отзывов через HTTP-запросы.
Пример создания нового отзыва через REST API
Для создания записи через POST-запрос используйте следующий пример на PHP с использованием wp_remote_post():
$response = wp_remote_post('https://example.com/wp-json/wp/v2/wpreg_review', array(
'headers' => array(
'Authorization' => 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type' => 'application/json',
),
'body' => json_encode(array(
'title' => 'Отличный сервис',
'content' => 'Очень доволен качеством работы!',
'status' => 'publish'
)),
));
if (is_wp_error($response)) {
// Обрабатываем ошибку
} else {
$body = wp_remote_retrieve_body($response);
$data = json_decode($body);
// Работа с ответом
}Не забудьте настроить аутентификацию — для создания и редактирования данных нужен валидный токен, например, с помощью JWT Authentication или OAuth.
Безопасность и права доступа в REST API WordPress
Очень важно контролировать доступ к API, чтобы не допустить утечки или изменения данных посторонними. В callback-функциях можно проверить права пользователя через функции WordPress, например, current_user_can().
function wpreg_custom_endpoint_permission_check() {
return current_user_can('edit_posts');
}
add_action('rest_api_init', function () {
register_rest_route('wpreg/v1', '/secure-data/', array(
'methods' => 'GET',
'callback' => 'wpreg_secure_data_callback',
'permission_callback' => 'wpreg_custom_endpoint_permission_check',
));
});
function wpreg_secure_data_callback() {
return array('secret' => 'Только для авторизованных пользователей');
}Если пользователь не авторизован или не имеет нужных прав, API вернет ошибку 403 Forbidden.
Лучшие плагины для работы с REST API в WordPress
Для расширения возможностей REST API и упрощения разработки можно использовать плагины:
- WP REST API Controller — позволяет управлять доступом к REST API для разных типов записей и таксономий без кода.
- JWT Authentication for WP REST API — добавляет поддержку аутентификации через JWT, упрощая защищенный доступ.
- ACF to REST API — интегрирует поле Advanced Custom Fields в REST API для передачи дополнительных данных.
- REST API Toolbox — удобный набор инструментов для настройки и отладки REST API.
Эти решения помогут вам быстрее реализовать сложные проекты и сделать API более гибким и безопасным.
Практические советы по отладке и тестированию REST API
Для отладки запросов используйте инструменты, такие как Postman или Insomnia — они позволяют создавать и тестировать HTTP-запросы с различными параметрами и заголовками. В WordPress также полезно включать WP_DEBUG для выявления ошибок.
Кроме того, для локального тестирования можно использовать плагин Query Monitor, который показывает запросы к API и ошибки, если они есть.
Наконец, всегда проверяйте корректность данных, которые отправляете и получаете, чтобы избежать проблем с безопасностью и производительностью.
Заключение
REST API — мощный инструмент для расширения возможностей WordPress. С его помощью можно создавать мобильные приложения, сложные фронтенды и интеграции с внешними системами. В этой статье мы рассмотрели, как создавать собственные эндпоинты, работать с кастомными типами записей, обеспечивать безопасность и использовать популярные плагины для упрощения разработки.
Начинайте с простых примеров, постепенно усложняя задачи, и вы быстро освоите работу с REST API на своем сайте.