WP REST API — мощный инструмент для разработчиков, который позволяет взаимодействовать с сайтом WordPress программно через HTTP-запросы. В этой статье разберем, как использовать WP REST API для автоматизации рутинных задач и расширения функционала сайта. Вы узнаете, как создавать, читать, обновлять и удалять данные с помощью REST API, а также получите практические примеры кода для реализации различных сценариев.
Основы WP REST API: что это и зачем нужно
WP REST API предоставляет стандартизированный интерфейс для работы с данными WordPress через запросы GET, POST, PUT, DELETE и другие. Это открывает возможности интеграции с внешними сервисами, мобильными приложениями и автоматизации внутри самого сайта.
Например, можно автоматически создавать записи, обновлять пользовательские метаданные, получать статистику или интегрировать сайт с CRM и другими системами.
WP REST API встроен в ядро WordPress с версии 4.7, что делает его доступным без установки дополнительных плагинов.
Как получить доступ к WP REST API и авторизоваться
Для публичных данных, таких как опубликованные записи или страницы, авторизация не требуется. Достаточно отправить GET-запросы на стандартные эндпоинты, например:
https://ваш-сайт.ru/wp-json/wp/v2/posts
Для выполнения операций, требующих прав администратора, например создания или обновления записей, нужна авторизация. Самый распространенный способ — использовать Basic Auth с помощью плагина Basic Auth или OAuth.
Пример использования Basic Auth с PHP:
$username = 'admin';
$password = 'пароль';
$headers = [
'Authorization: Basic ' . base64_encode($username . ':' . $password),
'Content-Type: application/json'
];
Пример: автоматическое создание записи через WP REST API
Допустим, нужно программно добавить новую запись в блог. Вот пример запроса на PHP с использованием cURL:
$data = [
'title' => 'Автоматически созданная запись',
'status' => 'publish',
'content' => 'Содержимое записи через REST API',
];
$ch = curl_init('https://ваш-сайт.ru/wp-json/wp/v2/posts');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result);
Если запрос успешен, вы получите JSON с данными созданной записи.
Расширение WP REST API: создание кастомных эндпоинтов
Иногда стандартных эндпоинтов недостаточно, и нужно создать собственный API для специфичных задач. Для этого используют функцию wproot_register_custom_rest_route, добавленную в файл functions.php темы или в плагин.
function wproot_register_custom_rest_route() {
register_rest_route('wproot/v1', '/hello', [
'methods' => 'GET',
'callback' => 'wproot_custom_hello_world',
]);
}
add_action('rest_api_init', 'wproot_register_custom_rest_route');
function wproot_custom_hello_world() {
return ['message' => 'Привет из кастомного REST API!'];
}
Теперь запрос GET на /wp-json/wproot/v1/hello вернет простой JSON с сообщением. По аналогии можно создать эндпоинты для любых операций.
Автоматизация обновления метаданных и пользовательских полей через REST API
WP REST API позволяет работать и с метаданными записей и пользователей, что полезно для автоматизации сложных сценариев.
Например, чтобы обновить пользовательское поле ACF, нужно убедиться, что оно доступно через REST API (плагин ACF to REST API помогает в этом). Далее запрос PUT к записи с нужными данными:
$data = [
'fields' => [
'custom_field' => 'Новое значение'
]
];
$ch = curl_init('https://ваш-сайт.ru/wp-json/wp/v2/posts/123');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
Обратите внимание, что для работы с метаданными через REST API нужно дополнительное расширение или собственная реализация.
Практические советы по безопасности и производительности при использовании WP REST API
При работе с REST API важно не забывать о безопасности:
- Используйте авторизацию и проверяйте права пользователей.
- Ограничивайте доступ к чувствительным данным.
- Проверяйте и фильтруйте входящие данные.
Для повышения производительности стоит кешировать ответы API, особенно для публичных запросов, чтобы снизить нагрузку на сервер.
Также полезно использовать плагины, такие как Clearfy Pro, которые помогают оптимизировать работу сайта и безопасность.
Интеграция WP REST API с внешними сервисами и автоматизация
WP REST API позволяет легко интегрировать WordPress с внешними системами. Например, можно автоматически отправлять данные о новых заказах в CRM, синхронизировать пользователей или публиковать записи из других приложений.
Рассмотрим простой пример на JavaScript для получения списка последних записей и вывода их на стороннем сайте:
fetch('https://ваш-сайт.ru/wp-json/wp/v2/posts')
.then(response => response.json())
.then(posts => {
posts.forEach(post => {
console.log(post.title.rendered);
});
});
Используя аналогичные методы, можно строить сложные автоматизированные решения.