WordPress REST API — мощный инструмент, который позволяет создавать, читать, обновлять и удалять записи и другие объекты WordPress через HTTP-запросы. В этой статье мы подробно разберём, как использовать REST API для создания и обновления записей (постов), а также рассмотрим примеры кода и эффективные методы аутентификации и обработки ошибок.
Что такое REST API в WordPress и зачем он нужен
REST API был интегрирован в ядро WordPress начиная с версии 4.7 и предоставляет стандартные URL для доступа к данным сайта в формате JSON. Это открывает возможности для создания мобильных приложений, внешних сервисов и мощных административных инструментов.
С помощью REST API можно:
- Создавать и редактировать записи из внешних приложений
- Делать интеграции с CRM, ERP и другими системами
- Автоматизировать процесс публикации контента
Для разработчика, знакомого с HTTP и JSON, работа с REST API WordPress открывает новые горизонты по управлению сайтом без необходимости заходить в админку.
Аутентификация для работы с REST API
Для операций создания и обновления записей необходима авторизация, так как эти действия требуют прав пользователя. Существуют несколько способов аутентификации:
1. Basic Authentication (для разработки)
Самый простой способ, но не рекомендуется для продакшена, так как передаёт логин и пароль в открытом виде. Для теста можно использовать плагин WP Basic Auth.
2. OAuth 1.0a
Сложнее в настройке, но безопаснее. Подходит для публичных приложений.
3. JWT (JSON Web Tokens)
Современный способ аутентификации с помощью плагинов, например, JWT Authentication. Позволяет безопасно передавать токены и легко интегрируется с фронтенд-приложениями.
Создание записи через REST API
Для создания записи отправляем POST-запрос на /wp-json/wp/v2/posts с необходимыми данными в формате JSON. Ниже пример на PHP с использованием библиотеки cURL для создания записи.
function wpset_create_post_via_rest($title, $content, $token) {
$url = get_site_url() . '/wp-json/wp/v2/posts';
$data = [
'title' => $title,
'content' => $content,
'status' => 'publish'
];
$args = [
'body' => json_encode($data),
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . $token
],
'method' => 'POST'
];
$response = wp_remote_request($url, $args);
if (is_wp_error($response)) {
return $response->get_error_message();
}
$code = wp_remote_retrieve_response_code($response);
$body = json_decode(wp_remote_retrieve_body($response), true);
if ($code === 201) {
return $body['id']; // ID созданного поста
} else {
return $body['message'] ?? 'Ошибка создания поста';
}
}
В этом примере функция принимает заголовок, содержимое и токен авторизации. Токен можно получить через JWT или другой метод аутентификации.
Обновление записи через REST API
Для обновления записи используем метод PUT или POST с указанием ID записи. Вот пример функции на PHP:
function wpset_update_post_via_rest($post_id, $title, $content, $token) {
$url = get_site_url() . '/wp-json/wp/v2/posts/' . $post_id;
$data = [
'title' => $title,
'content' => $content
];
$args = [
'body' => json_encode($data),
'headers' => [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . $token
],
'method' => 'POST' // WordPress принимает и POST для обновления
];
$response = wp_remote_request($url, $args);
if (is_wp_error($response)) {
return $response->get_error_message();
}
$code = wp_remote_retrieve_response_code($response);
$body = json_decode(wp_remote_retrieve_body($response), true);
if ($code === 200) {
return true;
} else {
return $body['message'] ?? 'Ошибка обновления поста';
}
}
Обратите внимание, что для обновления записи нужно знать её ID. В ответе API вы получите подтверждение или сообщение об ошибке.
Работа с метаполями и пользовательскими полями через REST API
По умолчанию REST API не возвращает все пользовательские поля, и чтобы работать с ними, нужно добавить поддержку в теме или плагине.
Пример добавления поддержки метаполей:
function wpset_register_meta_for_rest() {
register_post_meta('post', 'my_custom_field', [
'show_in_rest' => true,
'single' => true,
'type' => 'string'
]);
}
add_action('init', 'wpset_register_meta_for_rest');
Теперь при создании или обновлении записи через REST API можно передавать поле my_custom_field в JSON:
{
"title": "Заголовок",
"content": "Содержимое",
"meta": {
"my_custom_field": "Значение"
}
}
Полезные плагины для расширения работы с REST API
- Clearfy Pro — улучшает безопасность и производительность, позволяет контролировать доступ к REST API.
- WPRemark — расширенные возможности комментирования через REST API.
Обработка ошибок и отладка
При работе с REST API важно грамотно обрабатывать ошибки, чтобы понимать, что пошло не так. Ответы API содержат код HTTP и тело с подробностями.
Для отладки можно использовать такие инструменты, как Postman или curl:
curl -X POST https://example.com/wp-json/wp/v2/posts \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Тест","content":"Пример создания через API","status":"publish"}'
Если получаете ошибку 401 — проверьте аутентификацию, 403 — права доступа, 400 — неверные данные.
Заключение по использованию REST API в WordPress
REST API — незаменимый инструмент для автоматизации и интеграции. Правильно настроенная аутентификация, грамотная работа с данными и обработка ошибок позволят сделать ваш сайт более гибким и управляемым из внешних приложений и сервисов.
Дополнительно рекомендую изучить документацию на официальном сайте WordPress и протестировать API на тестовом сайте перед внедрением на живой проект.