Что такое REST API в WordPress и зачем его использовать для работы с записями
REST API — это современный интерфейс взаимодействия с WordPress, который позволяет создавать, получать, обновлять и удалять данные сайта через HTTP-запросы. Такой подход удобен для интеграции с внешними приложениями, мобильными приложениями или для реализации нестандартных административных панелей.
Использование REST API для создания и обновления записей особенно полезно, если вы хотите автоматизировать публикацию контента, интегрировать сайт с внешними системами или реализовать фронтенд на React, Vue и других фреймворках.
В WordPress REST API встроен изначально, начиная с версии 4.7, что обеспечивает надежную и стандартизированную работу с данными.
Основные эндпоинты для работы с записями и их возможности
Для работы с записями (post) в WordPress REST API используются следующие основные маршруты:
/wp-json/wp/v2/posts— получение списка записей и создание новых;/wp-json/wp/v2/posts/{id}— получение, обновление или удаление конкретной записи по ID.
Методы HTTP:
- GET — получить данные;
- POST — создать новую запись;
- PUT/PATCH — обновить запись;
- DELETE — удалить запись.
Для создания и обновления записей нужно иметь соответствующие права (обычно роль редактора или администратора) и пройти аутентификацию.
Аутентификация и безопасность при работе с REST API
Безопасность — ключевой момент при работе с REST API, особенно для изменения данных. По умолчанию WordPress REST API требует аутентификацию для POST, PUT и DELETE запросов.
Самые распространённые методы аутентификации:
- Cookie Authentication — работает, если запросы идут с фронтенда сайта, где пользователь авторизован.
- Basic Authentication — простой, но менее безопасный способ. Требует установки плагина Basic Auth.
- OAuth 1.0a — более сложный, но безопасный и рекомендуемый для внешних приложений.
- Application Passwords — встроенный в WordPress способ, удобный для API-запросов с использованием логина и сгенерированного пароля.
Для примера здесь будем использовать Application Passwords.
Пример создания записи через REST API с использованием Application Passwords
Для начала нужно сгенерировать пароль приложения в профиле пользователя WordPress (Пользователи > Ваш профиль > Пароли приложений).
Далее пример запроса на создание записи с помощью PHP и cURL:
$username = 'admin';
$app_password = 'abcd efgh ijkl mnop'; // пароль приложения с пробелами
$post_data = [
'title' => 'Новая запись через REST API',
'content' => 'Содержимое записи, созданной программно.',
'status' => 'publish'
];
$ch = curl_init('https://wpmanual.ru/wp-json/wp/v2/posts');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$app_password");
$response = curl_exec($ch);
curl_close($ch);
var_dump(json_decode($response, true));В результате создастся новая запись со статусом «опубликовано».
Обновление записи через REST API: пример с PHP
Для обновления записи нужно указать ее ID и отправить PATCH или POST запрос на эндпоинт /wp-json/wp/v2/posts/{id}.
$post_id = 123; // ID обновляемой записи
$post_data = [
'title' => 'Обновленный заголовок через REST API',
'content' => 'Новое содержимое записи.'
];
$ch = curl_init("https://wpmanual.ru/wp-json/wp/v2/posts/$post_id");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$app_password");
$response = curl_exec($ch);
curl_close($ch);
var_dump(json_decode($response, true));Обратите внимание, что метод PUT полностью заменяет запись, а PATCH — частично обновляет. WordPress REST API поддерживает оба, но чаще используют PUT.
Использование плагинов для расширения REST API и удобной работы с записями
Для расширения возможностей REST API можно использовать плагины:
- WP REST API Controller — позволяет управлять доступом, кастомизировать поля и эндпоинты.
- Advanced Custom Fields to REST API — добавляет в ответ API данные из полей ACF.
- JWT Authentication for WP REST API — реализует безопасный JSON Web Token аутентификацию.
Эти плагины упрощают интеграцию и позволяют более гибко управлять данными.
Советы и лучшие практики при работе с REST API в WordPress
При работе с REST API важно соблюдать несколько правил:
- Всегда используйте безопасные методы аутентификации (Application Passwords, OAuth, JWT).
- Минимизируйте права пользователя, под которым выполняются запросы.
- Проверяйте и валидируйте данные, которые отправляете и получаете.
- Используйте кеширование для GET-запросов, чтобы снизить нагрузку на сервер.
- Если нужно расширить стандартные эндпоинты, создавайте кастомные маршруты через
register_rest_route.
Пример регистрации кастомного эндпоинта для создания записи с проверкой прав
add_action('rest_api_init', function () {
register_rest_route('wpmanual/v1', '/create-post', [
'methods' => 'POST',
'callback' => 'wpmanual_create_post',
'permission_callback' => function () {
return current_user_can('edit_posts');
}
]);
});
function wpmanual_create_post(WP_REST_Request $request) {
$title = sanitize_text_field($request->get_param('title'));
$content = sanitize_textarea_field($request->get_param('content'));
$post_id = wp_insert_post([
'post_title' => $title,
'post_content' => $content,
'post_status' => 'publish',
'post_type' => 'post'
]);
if (is_wp_error($post_id)) {
return new WP_Error('post_creation_failed', 'Не удалось создать запись', ['status' => 500]);
}
return ['post_id' => $post_id, 'message' => 'Запись успешно создана'];
}Такой подход позволяет контролировать процесс и добавлять бизнес-логику.