Большинство пользователей воспринимают WordPress лишь как платформу для блогов и обычных сайтов, однако внутри неё скрыт мощный инструмент — REST API. Этот интерфейс открывает доступ ко всем данным, которые хранит WordPress (записи, страницы, пользователи, таксономии, комментарии), в стандартном формате JSON для внешних приложений. В результате WordPress перестаёт быть просто системой, рисующей страницы, и превращается в полноценный бэкенд для контента, то есть фронтенд можно построить на любой технологии и использовать WordPress исключительно как источник данных.
В современной веб-разработке эта идея называется «headless WordPress». При таком подходе админ-панель WordPress остаётся для управления контентом, а видимый пользователю интерфейс строится отдельно — в виде приложения на React, Vue, Next.js или мобильного клиента. Подобное разделение делает сайт быстрее, безопаснее и гибче, поскольку фронтенд и бэкенд развиваются независимо друг от друга. Если вы разработчик, REST API позволяет создавать современные интерфейсы, сохраняя при этом все удобства экосистемы WordPress.
Как работает REST API и основные эндпоинты
WordPress REST API принимает все запросы по адресу /wp-json/. Базовые эндпоинты ядра располагаются в версионированном пространстве wp/v2, что гарантирует сохранность старых интеграций даже при изменении API в будущем. Наиболее востребованные адреса — это маршруты, возвращающие записи, страницы, пользователей и категории, и каждым из них управляют через стандартные HTTP-методы.
GET /wp-json/wp/v2/posts # список всех записей
GET /wp-json/wp/v2/posts/42 # запись с ID 42
GET /wp-json/wp/v2/pages # страницы
GET /wp-json/wp/v2/users # пользователи
GET /wp-json/wp/v2/categories # категории
# Параметры фильтрации и пагинации
GET /wp-json/wp/v2/posts?per_page=5&page=2&search=домен&orderby=date
Каждый ответ возвращается в виде JSON-массива или объекта, где содержатся заголовок записи, её контент, дата, автор и прочие метаданные. Достаточно открыть в браузере адрес вида https://вашсайт.uz/wp-json/wp/v2/posts, чтобы сразу увидеть эти данные — устанавливать какой-либо плагин не требуется, ведь REST API встроен в ядро WordPress.
Чтение данных: запросы GET
Операции чтения обычно работают без аутентификации, поскольку опубликованные записи открыты для любого посетителя. Получение данных в современном фронтенде с помощью JavaScript выглядит следующим образом. Этот пример забирает последние пять записей и выводит их заголовки на экран, и именно такой подход составляет основу приложения на React или Vue.
async function getPosts() {
const response = await fetch(
'https://example.uz/wp-json/wp/v2/posts?per_page=5&_embed'
);
const posts = await response.json();
posts.forEach(post => {
console.log(post.title.rendered);
console.log(post.excerpt.rendered);
});
}
getPosts();
Параметр _embed имеет особое значение, так как он добавляет в ответ связанные объекты — данные об авторе и главное изображение записи (featured image). Без него для каждого изображения или автора пришлось бы отправлять отдельный запрос, что замедляло бы приложение. Таким образом, одним оптимальным запросом вы получаете все данные, необходимые для полного отображения записи.
Аутентификация: application passwords и JWT
А вот для записи, редактирования или удаления данных аутентификация обязательна, иначе любой желающий мог бы изменять контент вашего сайта. Начиная с WordPress 5.6 в ядре появился механизм Application Passwords, позволяющий создать отдельный секретный ключ для API, не раскрывая основной пароль. Этот ключ генерируется из профиля пользователя и в любой момент может быть отозван.
# Создание записи с application password (HTTP Basic Auth)
curl -X POST https://example.uz/wp-json/wp/v2/posts \
-u "admin:xxxx xxxx xxxx xxxx xxxx xxxx" \
-H "Content-Type: application/json" \
-d '{
"title": "Запись, созданная через API",
"content": "Этот контент отправлен программно.",
"status": "publish"
}'
В более сложных проектах, особенно в мобильных приложениях, удобнее метод JWT (JSON Web Token). Здесь пользователь один раз получает токен по логину и паролю, а затем в каждом запросе передаёт этот токен через заголовок Authorization: Bearer. Подход JWT устанавливается через специальный плагин и является stateless, то есть не требует хранения сессии на стороне сервера, поэтому хорошо масштабируется в высоконагруженных приложениях.
Создание собственного эндпоинта
Стандартные эндпоинты могут покрывать не все потребности — например, вам может понадобиться ответ, объединяющий данные из нескольких таблиц или требующий особой логики. В таком случае вы создаёте собственный маршрут с помощью функции WordPress register_rest_route. Следующий код добавляется в файл темы или в плагин и формирует новый адрес /wp-json/myapp/v1/featured.
add_action('rest_api_init', function () {
register_rest_route('myapp/v1', '/featured', [
'methods' => 'GET',
'callback' => 'myapp_get_featured',
'permission_callback' => '__return_true',
]);
});
function myapp_get_featured($request) {
$count = $request->get_param('count') ?: 3;
$query = new WP_Query([
'posts_per_page' => intval($count),
'meta_key' => 'is_featured',
'meta_value' => '1',
]);
$result = [];
foreach ($query->posts as $post) {
$result[] = [
'id' => $post->ID,
'title' => get_the_title($post),
'link' => get_permalink($post),
];
}
return new WP_REST_Response($result, 200);
}
Здесь permission_callback — крайне важный элемент, определяющий, кто может обращаться к эндпоинту. Для открытых данных используется __return_true, но для защищённой информации внутри него обязательно нужно прописать логику проверки прав пользователя. В противном случае ваш собственный эндпоинт может превратиться в брешь в безопасности.
Безопасность и лучшие практики
Поскольку REST API открывает сайт внешнему миру, безопасности требуется уделять особое внимание. Первое и главное правило — все запросы должны идти по HTTPS, ведь application password или JWT-токен, отправленные по открытому HTTP, легко перехватить. Кроме того, в эндпоинтах записи и удаления всегда проверяйте роль и права пользователя, допуская только разрешённые операции.
Ещё один важный аспект — ограничение числа запросов (rate limiting), которое предотвращает автоматизированные атаки и излишнюю нагрузку на сервер. Если REST API вашему сайту не нужен или используются лишь отдельные эндпоинты, отключение остальных уменьшает поверхность атаки. Эндпоинт /users, раскрывающий список пользователей, тоже часто ограничивают, так как он выдаёт логины и облегчает brute-force атаки.
Когда и как применять
WordPress REST API становится особенно сильным решением в следующих ситуациях: когда один и тот же контент нужно одновременно распространять на веб-сайт, мобильное приложение и другие платформы; когда вы хотите построить быстрый интерфейс на React или Vue и использовать WordPress только как хранилище контента; или когда нужно интегрировать данные WordPress с CRM, системой магазина либо инструментами аналитики. В каждом из этих случаев API сохраняет удобство редактирования WordPress и даёт полную свободу контроля над фронтендом.
Если вы сейчас ведёте обычный сайт на WordPress и в будущем хотите превратить его в современное приложение, изучение REST API станет отличной инвестицией. Лучший подход — создать небольшой собственный эндпоинт, попробовать получить из него данные и постепенно двигаться в сторону headless-архитектуры. Так ваш сайт окажется готовым не только к сегодняшним, но и к завтрашним требованиям.