Как использовать REST API в WordPress для создания приложений

REST API в WordPress — мощный инструмент, который позволяет создавать гибкие и масштабируемые приложения, взаимодействующие с сайтом на базе WordPress. В этой статье мы подробно рассмотрим, как настроить и использовать REST API для решения практических задач, включая примеры запросов и создание собственных эндпоинтов.

Что такое REST API в WordPress и зачем он нужен

WordPress REST API — это интерфейс, который позволяет получать и изменять данные сайта через HTTP-запросы. Это открывает возможности для создания мобильных приложений, SPA (Single Page Applications), интеграций с внешними системами и кастомных административных панелей без необходимости напрямую работать с базой данных или PHP-кодом.

API работает по стандарту REST, что делает его понятным и совместимым с большинством современных технологий и языков программирования.

Основные преимущества использования REST API:

  • Многообразие форматов данных, преимущественно JSON;
  • Универсальный доступ к контенту, пользователям, метаданным и настройкам;
  • Возможность расширения и создания собственных эндпоинтов;
  • Поддержка аутентификации и авторизации запросов.

Как отправлять запросы к REST API WordPress

По умолчанию WordPress предоставляет множество стандартных эндпоинтов, например:

  • /wp-json/wp/v2/posts — получение списка записей;
  • /wp-json/wp/v2/pages — страницы;
  • /wp-json/wp/v2/users — пользователи (требует аутентификации);
  • /wp-json/wp/v2/categories — категории.

Для примера рассмотрим как получить список последних 5 постов с помощью fetch в JavaScript:

fetch('https://wpbe.ru/wp-json/wp/v2/posts?per_page=5')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Ошибка:', error));

Ответ будет в формате JSON, содержащий массив объектов с данными постов.

Для выполнения POST, PUT, DELETE запросов, например, создания новой записи, потребуется аутентификация, обычно через OAuth, JWT или базовую авторизацию.

Аутентификация в REST API WordPress

Без аутентификации можно только читать публичный контент. Для изменения данных нужно подтвердить права пользователя. Популярные методы:

  • JWT Authentication — современный и безопасный метод, реализуемый через плагин jwt-auth.
  • Basic Authentication — простой метод для разработки, но не рекомендуется для продакшена.

Пример настройки JWT:

  • Установите и активируйте плагин JWT Authentication for WP REST API.
  • Добавьте в .htaccess или конфигурацию сервера необходимые правила.
  • Выполните запрос для получения токена:
POST https://wpbe.ru/wp-json/jwt-auth/v1/token
{
  "username": "ваш_логин",
  "password": "ваш_пароль"
}

В ответе получите token, который нужно использовать в заголовке авторизации всех последующих запросов:

Authorization: Bearer ваш_токен

Создание кастомных REST API эндпоинтов в WordPress

Для расширения функционала часто требуется создавать свои собственные маршруты и обработчики. Это делается с помощью функции register_rest_route.

Рассмотрим пример. Допустим, нужно создать эндпоинт, который возвращает все посты определённого автора по его ID.

add_action('rest_api_init', 'wpbe_register_custom_routes');
function wpbe_register_custom_routes() {
  register_rest_route('wpbe/v1', '/author-posts/(?P<id>\d+)', [
    'methods' => 'GET',
    'callback' => 'wpbe_get_author_posts',
    'permission_callback' => '__return_true',
  ]);
}

function wpbe_get_author_posts($request) {
  $author_id = $request['id'];
  $args = [
    'author' => $author_id,
    'post_status' => 'publish',
    'posts_per_page' => 10,
  ];
  $posts = get_posts($args);

  if (empty($posts)) {
    return new WP_Error('no_posts', 'Посты не найдены', ['status' => 404]);
  }

  $data = [];
  foreach ($posts as $post) {
    $data[] = [
      'id' => $post->ID,
      'title' => $post->post_title,
      'link' => get_permalink($post->ID),
    ];
  }

  return rest_ensure_response($data);
}

После добавления кода в файл functions.php вашей темы или в плагин, доступ к новым данным можно получить по адресу:

https://wpbe.ru/wp-json/wpbe/v1/author-posts/123, где 123 — ID автора.

Полезные плагины для работы с REST API WordPress

Для удобства разработки и расширения REST API в WordPress рекомендуем обратить внимание на следующие плагины:

  • WP REST API Controller — позволяет управлять видимостью полей и эндпоинтов без кода.
  • JWT Authentication for WP REST API — добавляет поддержку JWT аутентификации для безопасных запросов.
  • ACF to REST API — расширяет стандартные эндпоинты, добавляя данные из Advanced Custom Fields.
  • WPGraphQL — альтернативный API для запросов данных, если нужен GraphQL вместо REST.

Обработка ошибок и безопасность в REST API

При работе с REST API важно правильно обрабатывать ошибки и защищать данные. Вот несколько рекомендаций:

  • Используйте WP_Error для возврата ошибок с понятными сообщениями и HTTP-статусами.
  • Обязательно проверяйте права доступа в permission_callback при регистрации маршрута.
  • Ограничивайте количество возвращаемых данных для предотвращения перегрузки.
  • Используйте HTTPS для шифрования трафика между клиентом и сервером.

Пример проверки прав доступа для авторизованных пользователей:

function wpbe_permission_check() {
  return is_user_logged_in();
}

register_rest_route('wpbe/v1', '/secure-data', [
  'methods' => 'GET',
  'callback' => 'wpbe_get_secure_data',
  'permission_callback' => 'wpbe_permission_check',
]);

Заключение: как эффективно использовать REST API WordPress

REST API — это современный стандарт для обмена данными между WordPress и внешними приложениями. Освоив базовые запросы, аутентификацию и создание собственных эндпоинтов, вы сможете создавать сложные, быстрые и удобные решения.

Использование REST API освобождает от необходимости писать сложные SQL-запросы и позволяет строить масштабируемую архитектуру с разделением фронтенда и бэкенда.

Начинайте с изучения стандартных эндпоинтов, затем переходите к созданию своих маршрутов, не забывая про безопасность и обработку ошибок.

Автоматическое удаление старых записей через WP-Cron в WordPress
13.12.2025
Как использовать хуки для изменения функциональности WordPress без изменения кода темы
21.12.2025
Как добавить пользовательские подсказки (tooltips) в админке WordPress
24.12.2025
Как автоматизировать удаление старого медиа в WordPress
14.04.2026
Как удалить все посты определённого автора в WordPress
19.02.2026