WordPress REST API — это мощный инструмент, который позволяет разработчикам создавать внешние приложения, взаимодействующие с сайтом на WordPress. Если вы хотите расширить функциональность сайта, интегрировать его с другими системами или создать мобильное приложение, REST API — это то, что вам нужно.
Что такое REST API WordPress и зачем он нужен
REST API — это программный интерфейс, который позволяет получать, создавать, обновлять и удалять данные на сайте через HTTP-запросы. В WordPress REST API реализован в ядре начиная с версии 4.7, что делает его доступным на любом современном сайте.
Основные преимущества REST API:
- Возможность работы с сайтом вне стандартного PHP-окружения WordPress.
- Универсальный формат данных в JSON, удобный для мобильных и веб-приложений.
- Гибкость и расширяемость, возможность создавать свои собственные эндпоинты.
REST API позволяет создавать приложения, которые могут управлять постами, страницами, комментариями, пользователями и другими сущностями WordPress.
Как начать работу с REST API WordPress
Для начала нужно понять, как отправлять запросы к стандартным эндпоинтам и как их обрабатывать. Все стандартные маршруты доступны по URL вашего сайта с добавлением /wp-json/wp/v2/. Например, чтобы получить список постов, делаем GET-запрос к:
https://wphost.ru/wp-json/wp/v2/postsОтвет приходит в формате JSON с массивом постов и их свойствами.
Для работы с REST API можно использовать любые HTTP-клиенты: curl, Postman, axios и др. В JavaScript, например, запрос будет выглядеть так:
fetch('https://wphost.ru/wp-json/wp/v2/posts')
.then(response => response.json())
.then(data => console.log(data));Так вы получаете данные из WordPress и можете использовать их в любом приложении.
Как создавать и обновлять контент через REST API
Для создания, редактирования или удаления данных требуется авторизация. В WordPress для этого можно использовать несколько способов, например, базовую аутентификацию через плагин или OAuth. Для тестов подходит базовая аутентификация.
Пример создания нового поста с помощью curl и базовой аутентификации:
curl -X POST https://wphost.ru/wp-json/wp/v2/posts \
-u 'username:password' \
-H 'Content-Type: application/json' \
-d '{"title":"Новость через REST API", "content":"Текст поста", "status":"publish"}'При успешном запросе вернётся JSON с данными созданного поста.
В PHP можно написать функцию, которая создаёт пост через REST API, используя встроенный класс WP_Http:
function wphost_create_post_via_rest($title, $content) {
$url = get_site_url() . '/wp-json/wp/v2/posts';
$credentials = base64_encode('username:password');
$args = [
'headers' => [
'Authorization' => 'Basic ' . $credentials,
'Content-Type' => 'application/json',
],
'body' => json_encode([
'title' => $title,
'content' => $content,
'status' => 'publish',
]),
'method' => 'POST',
];
$http = new WP_Http();
$response = $http->request($url, $args);
return $response;
}Расширение REST API: создание собственных эндпоинтов
Иногда стандартных методов недостаточно, и нужно добавить свои маршруты для специфичных задач. Для этого WordPress предоставляет функцию register_rest_route.
Пример создания эндпоинта, который возвращает количество опубликованных постов:
add_action('rest_api_init', function () {
register_rest_route('wphost/v1', '/post-count', [
'methods' => 'GET',
'callback' => 'wphost_get_post_count',
]);
});
function wphost_get_post_count(WP_REST_Request $request) {
$count = wp_count_posts('post')->publish;
return ['post_count' => $count];
}Теперь по адресу https://wphost.ru/wp-json/wphost/v1/post-count можно получить количество опубликованных постов в JSON.
Авторизация и безопасность пользовательских эндпоинтов
Важно предусмотреть проверку прав доступа, чтобы чувствительные данные не были доступны всем. Например, можно добавить параметр permission_callback в register_rest_route:
'permission_callback' => function () {
return current_user_can('edit_posts');
}Такой эндпоинт смогут использовать только авторизованные пользователи с правом редактирования постов.
Полезные плагины для работы с REST API WordPress
Для упрощения работы с REST API рекомендуются следующие плагины:
- Basic Auth — добавляет базовую аутентификацию для тестов.
- JWT Authentication — более безопасный метод авторизации через JSON Web Token.
- WP REST API Controller — позволяет управлять доступом и полями данных через интерфейс.
Эти инструменты помогут вам быстро настроить и обезопасить API на вашем сайте.
Практическое применение REST API для интеграции и разработки
REST API открывает массу возможностей. Вот несколько сценариев:
- Создание мобильных приложений, взаимодействующих с сайтом.
- Интеграция с CRM или системами автоматизации.
- Динамическое обновление контента на фронтенде без перезагрузки страницы.
- Автоматизация публикаций и управления сайтом через внешние скрипты.
Например, можно написать JavaScript, который подгружает последние новости без перезагрузки страницы, используя REST API и fetch.
fetch('https://wphost.ru/wp-json/wp/v2/posts?per_page=5')
.then(response => response.json())
.then(posts => {
const container = document.getElementById('news');
posts.forEach(post => {
const el = document.createElement('div');
el.innerHTML = `<h3>${post.title.rendered}</h3><p>${post.excerpt.rendered}</p>`;
container.appendChild(el);
});
});Это простой способ сделать сайт более интерактивным и современным.