Что такое REST API в WordPress и зачем он нужен
REST API — это интерфейс программирования приложений, который позволяет взаимодействовать с сайтом WordPress извне, используя HTTP-запросы. Это мощный инструмент, который открывает множество возможностей: автоматизация задач, интеграция с внешними сервисами, создание кастомных приложений и панелей управления.
С помощью REST API можно создавать, обновлять, удалять и получать данные о записях, пользователях, таксономиях и других объектах WordPress без необходимости заходить в админ-панель. Это особенно полезно для разработчиков, которые хотят расширить функционал сайта или интегрировать WordPress с другими системами.
В WordPress REST API доступен по умолчанию с версии 4.7, что позволяет сразу приступать к работе без установки дополнительных плагинов.
Как настроить REST API и работать с его конечными точками
Для начала работы с REST API нужно понять структуру URL запросов. Базовый URL выглядит так:
https://example.com/wp-json/wp/v2/
Здесь wp/v2 — это версия и пространство имён стандартных конечных точек WordPress. По этим адресам можно получить список записей, пользователей, комментариев и прочего.
Например, чтобы получить список последних 5 записей, делаем GET-запрос:
https://example.com/wp-json/wp/v2/posts?per_page=5
Ответ приходит в формате JSON, что удобно для обработки на любом языке программирования.
Пример запроса на PHP с использованием wp_remote_get()
$response = wp_remote_get('https://example.com/wp-json/wp/v2/posts?per_page=5');
if (is_wp_error($response)) {
return;
}
$body = wp_remote_retrieve_body($response);
$posts = json_decode($body);
foreach ($posts as $post) {
echo $post->title->rendered . "\n";
}
Таким образом можно извлекать данные и использовать их в любом месте сайта или внешних приложениях.
Создание и регистрация собственных REST API маршрутов в WordPress
Стандартный набор маршрутов не всегда покрывает все задачи. Чтобы добавить уникальный функционал, можно зарегистрировать собственные маршруты с помощью функции register_rest_route.
Например, создадим маршрут для вывода списка популярных статей:
add_action('rest_api_init', function () {
register_rest_route('wpreset/v1', '/popular-posts', array(
'methods' => 'GET',
'callback' => 'wpreset_get_popular_posts',
'permission_callback' => '__return_true',
));
});
function wpreset_get_popular_posts() {
$args = array(
'posts_per_page' => 5,
'meta_key' => 'post_views_count',
'orderby' => 'meta_value_num',
);
$query = new WP_Query($args);
$posts = array();
while ($query->have_posts()) {
$query->the_post();
$posts[] = array(
'id' => get_the_ID(),
'title' => get_the_title(),
'link' => get_permalink(),
);
}
wp_reset_postdata();
return $posts;
}
Теперь запрос по адресу https://example.com/wp-json/wpreset/v1/popular-posts вернёт топ-5 популярных записей по количеству просмотров.
Для отслеживания просмотров можно использовать плагины вроде Clearfy Pro, который умеет считать просмотры и оптимизировать работу сайта.
Автоматизация задач с помощью REST API и WP-CLI
REST API отлично сочетается с WP-CLI — консольным инструментом управления WordPress. Комбинация этих технологий позволяет создавать скрипты для автоматического обновления данных, массовой обработки записей и интеграции с внешними системами.
Например, можно написать WP-CLI команду, которая будет отправлять данные на внешний сервис через REST API или наоборот — получать обновления и вносить их в базу WordPress.
Это упрощает рутинные задачи и снимает нагрузку с админ-панели.
Практические советы по безопасности при работе с REST API
REST API открывает мощные возможности, но и требует внимания к безопасности. Вот основные рекомендации:
- Авторизация и аутентификация. Для операций записи используйте аутентификацию через cookie, OAuth или JWT.
- Ограничение доступа. Реализуйте проверку прав доступа в колбэках маршрутов через параметр
permission_callback. - Валидация и санитизация. Обрабатывайте входящие данные, чтобы избежать уязвимостей.
- Отключение ненужных маршрутов. Если не используете стандартные маршруты, отключите их с помощью фильтров.
Использование плагина Clearfy Pro поможет упростить настройку безопасности и оптимизации REST API.
Примеры интеграции REST API с внешними сервисами
REST API позволяет легко интегрировать WordPress с CRM, системами email-маркетинга, мобильными приложениями и даже IoT-устройствами.
Для примера рассмотрим отправку данных формы на сторонний сервис через REST API с использованием плагина WPGPT, который помогает создавать умные формы и чат-боты.
Добавим обработчик на стороне WordPress, который будет принимать данные и отправлять их через REST API:
add_action('rest_api_init', function () {
register_rest_route('wpreset/v1', '/submit-form', array(
'methods' => 'POST',
'callback' => 'wpreset_handle_form_submission',
'permission_callback' => '__return_true',
));
});
function wpreset_handle_form_submission(WP_REST_Request $request) {
$data = $request->get_params();
// Валидация данных
if (empty($data['email']) || !filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
return new WP_Error('invalid_email', 'Неверный email', array('status' => 400));
}
// Логика отправки данных на внешний сервис
$response = wp_remote_post('https://external-service.example/api/submit', array(
'body' => json_encode($data),
'headers' => array('Content-Type' => 'application/json'),
));
if (is_wp_error($response)) {
return new WP_Error('external_error', 'Ошибка внешнего сервиса', array('status' => 500));
}
return array('success' => true);
}
Таким образом, можно организовать двусторонний обмен данными и автоматизировать бизнес-процессы.