REST API — это современный способ взаимодействия с WordPress через HTTP-запросы. Он позволяет создавать внешние приложения, мобильные клиенты и одностраничные сайты на основе данных из WordPress. В этой статье мы подробно разберём, как использовать REST API в WordPress, как создавать свои эндпоинты и настраивать аутентификацию для безопасного обмена данными.
Что такое REST API в WordPress и зачем он нужен
WordPress REST API — это набор стандартных URL-адресов (эндпоинтов), которые возвращают данные в формате JSON. Это позволяет получать, создавать, обновлять и удалять записи, страницы, пользователей и другие объекты WordPress программно.
REST API особенно полезен, если вы хотите:
- Создать мобильное приложение, которое будет работать с вашим сайтом;
- Разработать фронтенд на React, Vue или Angular, используя WordPress как бэкенд;
- Интегрировать WordPress с внешними сервисами;
- Автоматизировать управление контентом.
Начиная с версии 4.7, REST API включён в ядро WordPress. Это значит, что основные эндпоинты уже доступны без установки дополнительных плагинов.
Основные эндпоинты и работа с ними
По умолчанию в WordPress доступны следующие основные маршруты REST API:
/wp-json/wp/v2/posts— записи;/wp-json/wp/v2/pages— страницы;/wp-json/wp/v2/categories— категории;/wp-json/wp/v2/users— пользователи (требует авторизации);/wp-json/wp/v2/media— медиафайлы.
Например, чтобы получить список последних 10 записей в формате JSON, достаточно сделать GET-запрос к https://ваш-сайт/wp-json/wp/v2/posts?per_page=10.
Пример запроса с помощью PHP и функции wp_remote_get:
$response = wp_remote_get('https://example.com/wp-json/wp/v2/posts?per_page=10');
if (is_array($response) && !is_wp_error($response)) {
$body = wp_remote_retrieve_body($response);
$posts = json_decode($body);
foreach ($posts as $post) {
echo $post->title->rendered . "\n";
}
}
Создание кастомных эндпоинтов в WordPress REST API
В большинстве случаев стандартных эндпоинтов достаточно, но иногда нужна дополнительная функциональность. Для этого можно создавать свои собственные маршруты.
Рассмотрим пример, как зарегистрировать кастомный эндпоинт, который будет возвращать количество опубликованных записей.
add_action('rest_api_init', 'wpqa_register_custom_endpoint');
function wpqa_register_custom_endpoint() {
register_rest_route('wpqa/v1', '/post-count', array(
'methods' => 'GET',
'callback' => 'wpqa_get_post_count',
'permission_callback' => '__return_true',
));
}
function wpqa_get_post_count() {
$count_posts = wp_count_posts();
return array('published_posts' => $count_posts->publish);
}
Теперь GET-запрос к /wp-json/wpqa/v1/post-count вернёт JSON с количеством опубликованных записей.
Разрешения и безопасность кастомных эндпоинтов
При создании своих маршрутов важно правильно настроить permission_callback — функцию, которая проверяет, имеет ли пользователь право выполнять запрос. В примере выше мы указали __return_true, что открывает доступ всем. Для защищённых данных следует проверять права пользователя, например:
function wpqa_permission_callback() {
return current_user_can('edit_posts');
}
И использовать в регистрации маршрута:
register_rest_route('wpqa/v1', '/private-data', array(
'methods' => 'GET',
'callback' => 'wpqa_get_private_data',
'permission_callback' => 'wpqa_permission_callback',
));
Аутентификация в REST API: как получить доступ к защищённым данным
Для операций, требующих изменения данных (POST, PUT, DELETE), необходима аутентификация. В WordPress доступны несколько способов:
- Куки авторизации (используется в браузере, если пользователь залогинен);
- Basic Authentication (для разработки, плагин
WP Basic Auth); - OAuth 1.0a (сложнее в настройке, но безопаснее);
- JWT (JSON Web Tokens) — популярный и удобный способ, особенно для мобильных приложений.
Рассмотрим пример использования JWT с плагином JWT Authentication for WP REST API. После установки плагина и настройки секретного ключа в wp-config.php вы сможете получить токен с помощью запроса:
POST /wp-json/jwt-auth/v1/token
{
"username": "your_username",
"password": "your_password"
}
Ответ содержит токен, который необходимо передавать в заголовке Authorization: Bearer your_token для защищённых запросов.
Пример: создание новой записи через REST API с использованием JWT
После получения токена можно создавать записи. Вот пример PHP-кода с использованием wp_remote_post:
$token = 'ваш_токен_здесь';
$data = array(
'title' => 'Новая запись через REST API',
'status' => 'publish',
'content' => 'Содержимое записи, созданной через API',
);
$response = wp_remote_post('https://example.com/wp-json/wp/v2/posts', array(
'headers' => array(
'Authorization' => 'Bearer ' . $token,
'Content-Type' => 'application/json',
),
'body' => json_encode($data),
));
if (is_wp_error($response)) {
echo 'Ошибка: ' . $response->get_error_message();
} else {
echo 'Запись успешно создана!';
}
Полезные плагины для работы с REST API в WordPress
- WP REST API Controller — позволяет управлять доступностью стандартных эндпоинтов и полей через удобный интерфейс;
- Advanced Custom Fields to REST API — расширяет стандартный API, добавляя поддержку полей ACF;
- JWT Authentication for WP REST API — добавляет поддержку аутентификации через JWT;
- WP OAuth Server — реализует OAuth2 сервер для безопасной аутентификации.
Резюме и советы по работе с REST API в WordPress
REST API — мощный инструмент для расширения возможностей вашего сайта, интеграций и разработки приложений. Чтобы успешно работать с ним, придерживайтесь нескольких правил:
- Планируйте структуру данных и маршрутов заранее;
- Используйте правильную аутентификацию для защиты данных;
- При необходимости создавайте кастомные эндпоинты для специфических задач;
- Тестируйте запросы с помощью Postman, curl или аналогичных инструментов;
- Используйте стандартные функции WordPress для упрощения работы с API.
Освоение REST API откроет новые горизонты в разработке на WordPress и позволит создавать современные и гибкие решения.