REST API WordPress открывает широкие возможности для автоматизации и интеграции сайта с внешними сервисами. В этой статье мы подробно разберём, как использовать REST API для решения реальных задач: от создания и обновления контента до управления пользователями и кастомными типами записей.
Что такое REST API WordPress и зачем он нужен
REST API (Representational State Transfer Application Programming Interface) — это интерфейс, который позволяет взаимодействовать с WordPress-сайтом через HTTP-запросы. Он предоставляет доступ к данным сайта в формате JSON, что упрощает интеграцию с внешними приложениями, мобильными клиентами и автоматизированными скриптами.
Основные преимущества использования REST API:
- Автоматизация рутинных задач (создание постов, обновление метаданных и т.д.)
- Интеграция с внешними системами (CRM, ERP, маркетинговые платформы)
- Возможность создания кастомных приложений и интерфейсов управления контентом
Для работы с REST API используются стандартные HTTP-методы: GET, POST, PUT, DELETE, что делает API универсальным и понятным.
Настройка и базовое использование REST API WordPress
По умолчанию REST API включён в WordPress начиная с версии 4.7. Для обращения к API достаточно знать URL в формате https://example.com/wp-json/wp/v2/. Например, для получения списка постов можно отправить GET-запрос по адресу https://example.com/wp-json/wp/v2/posts.
Для выполнения защищённых операций (создание, изменение, удаление) требуется аутентификация. Самый простой способ – использовать JWT-аутентификацию или Basic Auth, но для продакшена рекомендуется OAuth или Application Passwords.
Пример запроса списка постов с помощью PHP
$response = wp_remote_get('https://example.com/wp-json/wp/v2/posts');
if (is_wp_error($response)) {
echo 'Ошибка запроса';
return;
}
$posts = json_decode(wp_remote_retrieve_body($response));
foreach ($posts as $post) {
echo $post->title->rendered . "\n";
}
Этот простой код позволяет получить и вывести заголовки последних постов без необходимости прямого доступа к базе данных.
Автоматизация создания и обновления контента через REST API
REST API позволяет программно создавать записи, что полезно для интеграции с внешними источниками данных или при массовом импорте. Ниже пример создания нового поста с помощью PHP и Basic Auth.
$url = 'https://example.com/wp-json/wp/v2/posts';
$data = [
'title' => 'Автоматический пост от WPTO',
'content' => 'Содержание поста создаётся программно через REST API.',
'status' => 'publish'
];
$args = [
'headers' => [
'Authorization' => 'Basic ' . base64_encode('user:password'),
'Content-Type' => 'application/json'
],
'body' => json_encode($data),
'method' => 'POST'
];
$response = wp_remote_post($url, $args);
if (is_wp_error($response)) {
echo 'Ошибка создания поста';
} else {
echo 'Пост успешно создан: ' . wp_remote_retrieve_body($response);
}
Важно соблюдать безопасность: не храните пароли в открытом виде, используйте защищённые соединения и ограничивайте права пользователя.
Обновление и удаление записей через REST API
Для обновления записи используется метод POST или PUT по адресу /wp-json/wp/v2/posts/{id}. Для удаления — метод DELETE.
// Обновление заголовка поста с ID 123
$url = 'https://example.com/wp-json/wp/v2/posts/123';
$data = ['title' => 'Обновлённый заголовок'];
$args = [
'headers' => [
'Authorization' => 'Basic ' . base64_encode('user:password'),
'Content-Type' => 'application/json'
],
'body' => json_encode($data),
'method' => 'POST'
];
$response = wp_remote_post($url, $args);
// Удаление поста
$url = 'https://example.com/wp-json/wp/v2/posts/123?force=true';
$args['method'] = 'DELETE';
$response = wp_remote_request($url, $args);
Работа с кастомными типами записей и метаданными через REST API
Если на сайте используются кастомные типы записей (custom post types) и таксономии, REST API позволяет взаимодействовать и с ними. Для этого при регистрации типа записи нужно задать параметр 'show_in_rest' => true.
Пример регистрации кастомного типа записи с поддержкой REST API:
function wpto_register_custom_post_type() {
register_post_type('product', [
'label' => 'Продукты',
'public' => true,
'show_in_rest' => true,
'supports' => ['title', 'editor', 'custom-fields'],
]);
}
add_action('init', 'wpto_register_custom_post_type');
После этого вы сможете получать, создавать и обновлять записи типа product через REST API по адресу /wp-json/wp/v2/product.
Для работы с пользовательскими метаданными можно использовать эндпоинты REST API, настроив поле register_meta с параметром 'show_in_rest' => true:
function wpto_register_meta() {
register_post_meta('product', 'price', [
'type' => 'number',
'single' => true,
'show_in_rest' => true,
]);
}
add_action('init', 'wpto_register_meta');
<Теперь поле price будет доступно при создании или обновлении продуктов через REST API.
Полезные плагины для работы с REST API и автоматизации на WordPress
Для расширения возможностей и упрощения работы с REST API рекомендуем обратить внимание на следующие плагины:
- Clearfy Pro — оптимизация и расширение функционала WordPress, в том числе улучшение безопасности REST API.
- WPRemark — автоматизация обработки форм, может интегрироваться с REST API для передачи данных.
- WPGPT — генерация контента с поддержкой API, что позволяет комбинировать REST API с ИИ-технологиями.
Использование этих инструментов поможет сделать автоматизацию более гибкой и надёжной.
Практические советы по безопасности при работе с REST API
REST API открывает удалённый доступ к данным сайта, поэтому важно соблюдать меры безопасности:
- Используйте аутентификацию для операций изменения данных.
- Ограничивайте права пользователей, которые используют API.
- Защищайте передачу данных с помощью HTTPS.
- При необходимости отключайте публичный доступ к REST API для неавторизованных пользователей через фильтры.
Пример ограничения доступа к REST API для гостей:
add_filter('rest_authentication_errors', function($result) {
if (!is_user_logged_in()) {
return new WP_Error('rest_forbidden', 'Доступ запрещён', ['status' => 401]);
}
return $result;
});
Заключение
REST API — мощный инструмент для автоматизации WordPress, позволяющий интегрировать сайт с внешними системами, создавать кастомные решения и значительно упростить управление контентом. Внимательное изучение возможностей API и практическое использование с учётом безопасности помогут сделать ваш сайт более гибким и современным.