WordPress уже давно вышел за рамки простой CMS для блогов и стал мощной платформой с гибким API, позволяющим создавать собственные приложения и интерфейсы. В этой статье мы подробно разберем, как использовать REST API WordPress для создания собственного блога с уникальным фронтендом, а также как расширить функционал с помощью кастомных эндпоинтов и плагинов.
Что такое REST API в WordPress и зачем он нужен
REST API — это интерфейс взаимодействия с сайтом WordPress через HTTP-запросы, позволяющий получать, создавать, обновлять и удалять данные без необходимости работать напрямую с базой данных или PHP-шаблонами. Это открывает огромные возможности для разработчиков создавать SPA (Single Page Application), мобильные приложения и кастомные административные панели.
С помощью REST API вы можете:
- Получать списки записей, страниц, пользователей, таксономий;
- Создавать и редактировать записи программно;
- Расширять стандартный API своими собственными эндпоинтами;
- Интегрировать WordPress с внешними сервисами.
Как получить список записей блога через REST API
Для начала посмотрим, как получить записи блога с помощью стандартного эндпоинта.
Пример запроса на получение последних 10 записей:
GET https://wpwebsite.ru/wp-json/wp/v2/posts?per_page=10Этот запрос вернет JSON с данными о постах, включая заголовок, содержимое, дату публикации и другие поля.
Для удобства работы с API можно использовать JavaScript fetch:
fetch('https://wpwebsite.ru/wp-json/wp/v2/posts?per_page=10')
.then(response => response.json())
.then(posts => {
posts.forEach(post => {
console.log(post.title.rendered);
});
});Создание пользовательского эндпоинта для расширения функционала
Стандартные эндпоинты покрывают базовые задачи, но часто нужно добавить свою логику. Например, вывести популярные записи по просмотрам или добавить фильтрацию по своим метаполям.
Для этого создадим плагин wpwebsite-custom-api с пользовательским эндпоинтом.
В файле wpwebsite-custom-api.php пишем:
<?php
/**
* Plugin Name: WPWebsite Custom API
*/
add_action('rest_api_init', function () {
register_rest_route('wpwebsite/v1', '/popular-posts/', array(
'methods' => 'GET',
'callback' => 'wpwebsite_get_popular_posts',
));
});
function wpwebsite_get_popular_posts(WP_REST_Request $request) {
$args = array(
'posts_per_page' => 5,
'meta_key' => 'post_views_count',
'orderby' => 'meta_value_num',
'order' => 'DESC',
);
$query = new WP_Query($args);
$posts = array();
if ($query->have_posts()) {
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;
}
Теперь запрос GET https://wpwebsite.ru/wp-json/wpwebsite/v1/popular-posts/ вернет 5 самых популярных записей по количеству просмотров, которые вы заранее считаете и сохраняете в метаполе post_views_count.
Пример: создание и обновление записи через REST API с аутентификацией
Для создания или редактирования записей через API требуется аутентификация. Самые популярные способы — использование JWT или базовой авторизации с HTTPS.
Пример кода на PHP с использованием базовой авторизации для создания записи:
$url = 'https://wpwebsite.ru/wp-json/wp/v2/posts';
$username = 'admin';
$password = 'password';
$data = array(
'title' => 'Новая запись через REST API',
'content' => 'Содержимое записи, созданной программно',
'status' => 'publish'
);
$options = array(
'http' => array(
'header' => 'Content-Type: application/json\r\n' .
'Authorization: Basic ' . base64_encode($username . ':' . $password) . '\r\n',
'method' => 'POST',
'content' => json_encode($data),
),
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
Такой подход позволяет автоматизировать публикацию контента из внешних систем или собственных приложений.
Использование плагина Clearfy Pro для управления REST API в WordPress
Если вы хотите контролировать доступ к REST API, например, ограничить его для неавторизованных пользователей или отключить части API, отлично подойдет плагин Clearfy Pro.
Clearfy позволяет:
- Отключить REST API для гостей;
- Настроить список разрешенных эндпоинтов;
- Управлять доступом через роли и права.
Это особенно важно для безопасности, так как REST API открывает данные сайта.
Практические советы по работе с REST API WordPress
Кэширование ответов API
Чтобы снизить нагрузку на сервер и ускорить работу фронтенда, используйте кэширование JSON-ответов. Для этого можно применять серверные решения (например, Redis) или клиентские библиотеки с кешем.
Обработка ошибок и валидация данных
При разработке собственных эндпоинтов тщательно проверяйте входящие данные и возвращайте информативные ошибки через WP_Error. Это поможет отладке и улучшит UX.
Безопасность и аутентификация
Всегда используйте защищенные протоколы (HTTPS) и надежные методы аутентификации, избегайте передачи паролей в открытом виде.
Заключение
REST API в WordPress — мощный инструмент для создания современных приложений с кастомным интерфейсом и расширенным функционалом. Используя стандартные эндпоинты и создавая собственные, вы можете построить уникальный блог или проект, максимально соответствующий вашим требованиям.
Для удобства и безопасности рекомендуется комбинировать собственные разработки с проверенными плагинами, например, Clearfy Pro, который поможет грамотно управлять доступом к API.