Что такое REST API в WordPress и зачем он нужен
REST API — это программный интерфейс, который позволяет взаимодействовать с WordPress через HTTP-запросы. С его помощью можно получать, создавать, изменять и удалять данные сайта извне, например, через мобильные приложения, внешние сервисы или кастомные панели управления. Это особенно полезно, если стандартных возможностей WordPress недостаточно или нужно интегрировать сайт с другими системами.
В WordPress REST API встроен по умолчанию начиная с версии 4.7, что делает его мощным инструментом для разработчиков. С помощью API можно работать с постами, пользователями, таксономиями и даже создавать свои собственные конечные точки (эндпоинты).
Пример реального применения REST API: создание одностраничного приложения (SPA), которое загружает контент динамически без перезагрузки страницы, или интеграция с CRM для автоматического добавления новых пользователей.
Основные возможности и встроенные маршруты REST API в WordPress
WordPress предоставляет стандартный набор маршрутов, которые позволяют оперировать основными объектами сайта. Например:
/wp-json/wp/v2/posts— получение списка постов;/wp-json/wp/v2/pages— страницы;/wp-json/wp/v2/users— пользователи;/wp-json/wp/v2/media— медиафайлы.
Методы поддерживают GET, POST, PUT, DELETE — то есть можно как читать, так и изменять данные.
Для примера, чтобы получить список последних 5 постов, достаточно сделать GET-запрос к /wp-json/wp/v2/posts?per_page=5. Ответ придет в формате JSON, который можно использовать в любом клиентском приложении.
При работе с приватными данными важно использовать аутентификацию. WordPress поддерживает несколько способов, включая OAuth, cookie-аутентификацию и приложения с использованием персональных токенов.
Создание кастомных эндпоинтов REST API в WordPress
Если стандартных маршрутов недостаточно, можно создавать свои собственные. Это позволяет реализовать уникальные бизнес-логики и упростить взаимодействие с сайтом.
Ниже пример создания кастомного REST API эндпоинта, который возвращает список последних 3 новостей из кастомного типа записей news с дополнительными полями:
add_action('rest_api_init', function () {
register_rest_route('wpkit/v1', '/latest-news/', array(
'methods' => 'GET',
'callback' => 'wpkit_get_latest_news',
'permission_callback' => '__return_true',
));
});
function wpkit_get_latest_news($request) {
$args = array(
'post_type' => 'news',
'posts_per_page' => 3,
'orderby' => 'date',
'order' => 'DESC',
);
$query = new WP_Query($args);
$data = [];
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$data[] = array(
'id' => get_the_ID(),
'title' => get_the_title(),
'excerpt' => get_the_excerpt(),
'date' => get_the_date('c'),
'link' => get_permalink(),
);
}
wp_reset_postdata();
}
return rest_ensure_response($data);
}После добавления этого кода в файл плагина или functions.php темы, запрос /wp-json/wpkit/v1/latest-news/ вернет JSON с нужными данными.
Такой подход упрощает создание фронтенда на Vue, React или Angular, а также интеграцию с внешними приложениями.
Примеры полезных плагинов для работы с REST API в WordPress
Для упрощения работы с REST API существуют готовые плагины, которые расширяют функционал или облегчают разработку:
- WP REST API Controller — позволяет управлять доступом к стандартным маршрутам и настраивать поля, которые возвращаются API без программирования.
- Advanced Custom Fields to REST API — добавляет поля ACF в JSON-ответы REST API, что удобно при использовании пользовательских полей.
- JWT Authentication for WP REST API — добавляет поддержку JWT-токенов для безопасной аутентификации запросов.
Используя эти плагины, можно быстро настроить API под свои задачи без глубоких знаний PHP.
Как защитить REST API и обеспечить безопасность
REST API открывает мощные возможности, но без правильной защиты представляет риск безопасности. Вот основные рекомендации:
- Ограничьте доступ к чувствительным маршрутам, используя
permission_callbackс проверкой прав пользователя. - Используйте аутентификацию — cookie, OAuth или JWT.
- Не выдавайте лишние данные, особенно пользовательские пароли или метаданные.
- Логируйте подозрительную активность для последующего анализа.
Например, для закрытия доступа к информации о пользователях можно использовать фильтр:
add_filter('rest_endpoints', function($endpoints) {
if (isset($endpoints['/wp/v2/users'])) {
unset($endpoints['/wp/v2/users']);
}
return $endpoints;
});Это предотвратит доступ к списку пользователей через API, если вы не хотите его публиковать.
Практическая задача: интеграция REST API WordPress с внешним сервисом
Рассмотрим пример, когда нужно отправлять данные новых заказов из WooCommerce в CRM-систему через REST API. В WordPress можно создать обработчик, который срабатывает при создании заказа и отправляет данные через HTTP-запрос:
add_action('woocommerce_thankyou', 'wpkit_send_order_to_crm', 10, 1);
function wpkit_send_order_to_crm($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
$data = [
'order_id' => $order->get_id(),
'total' => $order->get_total(),
'customer_email' => $order->get_billing_email(),
'items' => []
];
foreach ($order->get_items() as $item) {
$data['items'][] = [
'product_id' => $item->get_product_id(),
'quantity' => $item->get_quantity(),
'name' => $item->get_name(),
];
}
$response = wp_remote_post('https://crm.example.com/api/orders', [
'headers' => ['Content-Type' => 'application/json'],
'body' => json_encode($data),
]);
if (is_wp_error($response)) {
error_log('CRM API error: ' . $response->get_error_message());
}
}Этот код автоматически отправит заказ в CRM после оформления. Такой подход можно адаптировать под любые внешние API.
Выводы и рекомендации по использованию REST API в WordPress
REST API в WordPress — мощный инструмент для расширения возможностей сайта и интеграции с внешними сервисами. Чтобы использовать его максимально эффективно:
- Изучите стандартные маршруты и возможности аутентификации.
- Создавайте кастомные эндпоинты для уникальных задач.
- Используйте готовые плагины для упрощения работы с API и безопасности.
- Следите за безопасностью и не выдавайте лишнюю информацию.
Если внедрять REST API грамотно, можно значительно улучшить производительность и функциональность сайта на WordPress, создавая современные и удобные решения.