WordPress REST API — мощный инструмент, позволяющий взаимодействовать с вашим сайтом программно. Он открывает доступ к данным сайта через HTTP-запросы и идеально подходит для автоматизации обновления контента. В этой статье подробно разберём, как использовать WP REST API для автоматического обновления постов и других записей, приведём примеры кода и рассмотрим полезные плагины, облегчающие работу с REST API.
Что такое WP REST API и зачем он нужен для автоматизации
WP REST API — это набор конечных точек (endpoints), которые позволяют получать, создавать, обновлять и удалять данные WordPress через HTTP-запросы. Это значит, что вы можете управлять контентом сайта не только через административную панель, но и программно, используя любой язык программирования, поддерживающий HTTP.
Автоматическое обновление контента с помощью REST API полезно для:
- синхронизации данных с внешними сервисами;
- обновления новостных лент и каталогов;
- массового редактирования записей и пользовательских типов;
- интеграции с мобильными и SPA-приложениями.
Для примера рассмотрим, как обновлять содержимое поста по расписанию с помощью WP-Cron и REST API.
Аутентификация в WP REST API: базовые методы
Безопасность — важный аспект при работе с REST API. Для изменения данных нужна аутентификация. Основные способы:
- Cookie Authentication — используется в браузере, подходит для AJAX-запросов с фронтенда.
- Basic Authentication — простой способ для тестов, требует передачи логина и пароля в заголовке, не рекомендуется для продакшена без HTTPS.
- OAuth — сложный, но безопасный метод, подходит для публичных API.
- Application Passwords — введён в WordPress 5.6, позволяет создавать пароли для приложений с ограниченными правами.
Для автоматического обновления на сервере лучше использовать Application Passwords или OAuth.
Пример: автоматическое обновление заголовка и содержимого поста через WP REST API
Рассмотрим функцию, которая обновляет пост с ID 123, изменяя заголовок и содержимое. Для простоты используем Basic Authentication (только для локального тестирования):
function wp_lessons_update_post_via_rest() {
$post_id = 123;
$url = get_site_url() . '/wp-json/wp/v2/posts/' . $post_id;
$data = [
'title' => 'Новый заголовок обновлённый через REST API',
'content' => 'Обновлённое содержимое автоматически через WP REST API.'
];
$args = [
'body' => json_encode($data),
'headers' => [
'Authorization' => 'Basic ' . base64_encode('username:password'),
'Content-Type' => 'application/json',
],
'method' => 'POST',
'timeout' => 15,
];
$response = wp_remote_post($url, $args);
if (is_wp_error($response)) {
error_log('Ошибка обновления поста через REST API: ' . $response->get_error_message());
} else {
$code = wp_remote_retrieve_response_code($response);
if ($code === 200) {
error_log('Пост успешно обновлён через REST API');
} else {
error_log('Ошибка обновления поста, код ответа: ' . $code);
}
}
}
// Запускаем обновление по расписанию через WP-Cron
if (!wp_next_scheduled('wp_lessons_update_post_hook')) {
wp_schedule_event(time(), 'hourly', 'wp_lessons_update_post_hook');
}
add_action('wp_lessons_update_post_hook', 'wp_lessons_update_post_via_rest');
В этом примере функция wp_lessons_update_post_via_rest отправляет POST-запрос к REST API, обновляя заголовок и содержимое поста. С помощью WP-Cron она вызывается каждый час.
Использование плагина Clearfy Pro для работы с REST API
Плагин Clearfy Pro предлагает расширенные настройки безопасности REST API. С его помощью можно:
- ограничить доступ к REST API для определённых ролей;
- отключить REST API для неавторизованных пользователей;
- логировать и контролировать API-запросы.
Это важно для защиты сайта, особенно если автоматизация происходит через внешние скрипты.
Работа с пользовательскими типами записей и метаданными через REST API
WP REST API поддерживает не только стандартные посты и страницы, но и кастомные типы записей (CPT). Чтобы они были доступны, при регистрации CPT нужно добавить параметр show_in_rest => true. Например:
function wp_lessons_register_custom_post_type() {
register_post_type('product', [
'label' => 'Товары',
'public' => true,
'show_in_rest' => true, // Важно для REST API
'supports' => ['title', 'editor', 'custom-fields'],
]);
}
add_action('init', 'wp_lessons_register_custom_post_type');
Для обновления произвольных полей (метаданных) через REST API нужно зарегистрировать их в схеме API с помощью register_rest_field или использовать плагин типа Expert Review, который расширяет возможности работы с метаданными.
Пример добавления пользовательского поля в REST API
function wp_lessons_register_custom_meta_field() {
register_rest_field('product', 'price', [
'get_callback' => function($object) {
return get_post_meta($object['id'], 'price', true);
},
'update_callback' => function($value, $post) {
if (!is_numeric($value)) {
return new WP_Error('invalid_price', 'Цена должна быть числом', ['status' => 400]);
}
update_post_meta($post->ID, 'price', $value);
},
'schema' => [
'type' => 'number',
'description' => 'Цена товара',
'context' => ['view', 'edit'],
],
]);
}
add_action('rest_api_init', 'wp_lessons_register_custom_meta_field');
Теперь поле price доступно для чтения и записи через REST API.
Ошибки и отладка при работе с WP REST API
При автоматическом обновлении контента важно уметь отлавливать ошибки:
- Проверяйте HTTP-коды ответов (200 — успех, 4xx/5xx — ошибки).
- Используйте
is_wp_error()для проверки ошибок в ответе. - Включайте WP_DEBUG и логируйте ошибки в
error_log. - Проверьте права пользователя, под которым выполняется запрос — достаточно ли их для обновления поста.
Также можно использовать сторонние плагины для расширенной диагностики REST API, например WPCommunity.
Заключение: интеграция и автоматизация с WP REST API
Использование WP REST API для автоматического обновления контента даёт огромные возможности по интеграции WordPress с внешними сервисами и собственными скриптами. Важно грамотно настроить аутентификацию, правильно регистрировать пользовательские поля и отлавливать ошибки. По мере роста проекта REST API позволит масштабировать и автоматизировать многие процессы без ручного вмешательства.
Для более продвинутых задач советуем ознакомиться с плагинами Clearfy Pro, Expert Review и WPCommunity для расширения возможностей.