WordPress с версии 4.7 имеет встроенный REST API, который позволяет разработчикам получать и отправлять данные в формате JSON по HTTP-запросам. Это мощный инструмент для интеграции WordPress с внешними приложениями, мобильными приложениями и современными фронтенд-фреймворками.
Что такое REST API в WordPress и для чего он нужен
REST API — это интерфейс взаимодействия, основанный на архитектурном стиле REST. В WordPress он позволяет работать с записями, страницами, пользователями, комментариями и другими типами данных через стандартные HTTP-методы (GET, POST, PUT, DELETE).
Основное преимущество — возможность создавать decoupled приложения, когда фронтенд отделён от бэкенда, а данные берутся через API. Это также удобно для мобильных приложений и интеграций с внешними сервисами.
Кроме того, REST API можно расширять, добавляя собственные маршруты и эндпоинты, что позволяет создавать уникальные решения под задачи сайта.
Как получать данные через REST API WordPress (GET запросы)
Для получения списка постов достаточно сделать GET-запрос к стандартному эндпоинту:
https://example.com/wp-json/wp/v2/postsМожно фильтровать результаты, например, по категориям, тегам или авторам:
https://example.com/wp-json/wp/v2/posts?categories=5&per_page=10Для запроса одного конкретного поста:
https://example.com/wp-json/wp/v2/posts/123В ответ вы получите JSON с данными поста, включая заголовок, содержимое, дату и мета-данные.
Пример запроса через PHP (используя wp_remote_get)
function wphow_fetch_posts() {
$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);
return json_decode($body, true);
}Эта функция возвращает массив с последними 5 постами.
Добавление и изменение данных через REST API (POST, PUT запросы)
Для создания и изменения записей через REST API требуется авторизация. WordPress поддерживает несколько методов авторизации, включая cookie авторизацию для фронтенда и базовую аутентификацию для внешних приложений.
Наиболее простой способ для разработки — использовать плагин Basic Auth от WPShop, который позволяет быстро настроить базовую аутентификацию.
Пример создания поста через REST API с использованием PHP
function wphow_create_post() {
$url = 'https://example.com/wp-json/wp/v2/posts';
$args = [
'headers' => [
'Authorization' => 'Basic ' . base64_encode('user:password'),
'Content-Type' => 'application/json',
],
'body' => json_encode([
'title' => 'Новый пост через REST API',
'content' => 'Содержимое поста',
'status' => 'publish'
]),
'method' => 'POST'
];
$response = wp_remote_request($url, $args);
return wp_remote_retrieve_body($response);
}Этот код создаст новый опубликованный пост на сайте.
Расширение REST API: создание кастомных эндпоинтов
В WordPress можно добавлять собственные маршруты, которые возвращают специфичные данные или выполняют кастомную логику. Это удобно для реализации API под нужды темы или плагина.
Пример регистрации кастомного маршрута:
add_action('rest_api_init', function () {
register_rest_route('wphow/v1', '/hello', [
'methods' => 'GET',
'callback' => 'wphow_rest_hello_callback',
]);
});
function wphow_rest_hello_callback(WP_REST_Request $request) {
return ['message' => 'Привет из кастомного REST API эндпоинта!'];
}Теперь по адресу /wp-json/wphow/v1/hello можно получить JSON с сообщением.
Использование параметров запроса в кастомных эндпоинтах
Вы можете принимать параметры из URL и использовать их в логике:
add_action('rest_api_init', function () {
register_rest_route('wphow/v1', '/post/(?P<id>\d+)', [
'methods' => 'GET',
'callback' => 'wphow_rest_get_post_by_id',
'args' => [
'id' => [
'validate_callback' => function($param, $request, $key) {
return is_numeric($param);
}
]
]
]);
});
function wphow_rest_get_post_by_id(WP_REST_Request $request) {
$post_id = $request->get_param('id');
$post = get_post($post_id);
if (!$post) {
return new WP_Error('no_post', 'Пост не найден', ['status' => 404]);
}
return [
'id' => $post->ID,
'title' => $post->post_title,
'content' => $post->post_content
];
}Такой эндпоинт позволяет запрашивать данные поста по ID с проверкой параметров.
Безопасность и производительность при работе с REST API
При работе с REST API важно учитывать безопасность. Неавторизованные пользователи могут получить доступ к открытым данным, а для создания и редактирования записей необходима авторизация.
Рекомендуется ограничивать доступ к отдельным эндпоинтам, если там есть чувствительные данные. Для этого можно использовать фильтры и проверять права пользователя через current_user_can().
Также стоит учитывать нагрузку на сервер при частых запросах. Для оптимизации можно использовать кэширование ответов, например, с помощью плагина Clearfy Pro, который помогает улучшить производительность и безопасность сайта.
Заключение
REST API WordPress открывает широкие возможности для разработки современных приложений и интеграций. Знание его возможностей и умение создавать кастомные эндпоинты позволяет создавать гибкие и масштабируемые решения.
Используйте встроенные маршруты для стандартных данных, расширяйте API под задачи проекта и обязательно обеспечивайте безопасность и оптимизацию.