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

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

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

С помощью REST API можно работать с постами, страницами, пользователями, комментариями и другими объектами WordPress. Это особенно полезно, если нужно создать кастомные интерфейсы или автоматизировать задачи.

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

Основные возможности REST API WordPress

REST API позволяет:

  • Получать списки и отдельные записи постов, страниц, медиафайлов и других типов записей;
  • Создавать, обновлять и удалять записи (при наличии прав доступа);
  • Работать с метаданными, таксономиями, комментариями, пользователями;
  • Расширять API собственными маршрутами и эндпоинтами;
  • Использовать стандартные HTTP-методы: GET, POST, PUT, DELETE, PATCH;
  • Авторизоваться через cookie или OAuth для защиты данных.

Поддержка JSON формата облегчает интеграцию с современными фреймворками и языками программирования.

Пример: Получение списка последних постов через REST API

Самый простой запрос к REST API — получить последние записи. Для этого достаточно отправить GET-запрос по URL:

https://wpboot.ru/wp-json/wp/v2/posts

Этот запрос вернёт JSON-массив из последних записей блога. Можно добавить параметры, например, "per_page=5", чтобы получить ровно 5 записей:

https://wpboot.ru/wp-json/wp/v2/posts?per_page=5

Ответ содержит поля: ID, заголовок, контент, дату публикации и другие данные. Вот пример обработки такого ответа на JavaScript с использованием fetch:

fetch('https://wpboot.ru/wp-json/wp/v2/posts?per_page=5')
  .then(response => response.json())
  .then(posts => {
    posts.forEach(post => {
      console.log(post.title.rendered);
    });
  });

Как получить конкретную запись

Чтобы получить данные одной записи по ID, используйте URL с ID записи, например:

https://wpboot.ru/wp-json/wp/v2/posts/123

Где 123 — ID нужного поста. В ответ придёт JSON с деталями этой записи.

Создание и обновление записей через REST API с авторизацией

Для создания и изменения данных требуется авторизация. Наиболее простой способ — использовать cookie-авторизацию, если запросы идут с фронтенда сайта, или применять OAuth/JWT для внешних приложений.

Пример создания записи с помощью fetch и cookie-авторизации:

fetch('https://wpboot.ru/wp-json/wp/v2/posts', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-WP-Nonce': wpboot_getNonce() // функция, возвращающая nonce
  },
  body: JSON.stringify({
    title: 'Новая запись через REST API',
    content: 'Текст записи...',
    status: 'publish'
  })
})
.then(response => response.json())
.then(data => console.log(data));

Чтобы получить nonce, обычно в теме или плагине добавляют в локализацию скриптов PHP-функцию:

function wpboot_localize_scripts() {
  wp_localize_script('main-js', 'wpboot', [
    'nonce' => wp_create_nonce('wp_rest')
  ]);
}
add_action('wp_enqueue_scripts', 'wpboot_localize_scripts');

И в JavaScript вызывают wpboot.nonce.

Обновление записи

Для обновления записи используется метод PUT или POST с указанием ID записи:

fetch('https://wpboot.ru/wp-json/wp/v2/posts/123', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-WP-Nonce': wpboot_getNonce()
  },
  body: JSON.stringify({
    title: 'Обновлённый заголовок'
  })
});

Создание собственного эндпоинта REST API в WordPress

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

Для этого добавим в functions.php следующий код:

function wpboot_register_custom_route() {
  register_rest_route('wpboot/v1', '/message/', [
    'methods' => 'GET',
    'callback' => 'wpboot_handle_custom_message',
    'permission_callback' => '__return_true'
  ]);
}
add_action('rest_api_init', 'wpboot_register_custom_route');

function wpboot_handle_custom_message($request) {
  return ['message' => 'Привет от REST API wpboot!'];
}

Теперь по адресу https://wpboot.ru/wp-json/wpboot/v1/message/ можно получить JSON с сообщением.

Добавление параметров и проверка прав

Можно расширить эндпоинт, принимая параметры и проверяя права пользователя:

function wpboot_register_custom_route() {
  register_rest_route('wpboot/v1', '/user-data/', [
    'methods' => 'GET',
    'callback' => 'wpboot_get_user_data',
    'permission_callback' => function() {
      return current_user_can('read');
    }
  ]);
}

function wpboot_get_user_data($request) {
  $user_id = $request->get_param('id');
  $user = get_userdata($user_id);
  if (!$user) {
    return new WP_Error('no_user', 'Пользователь не найден', ['status' => 404]);
  }
  return [
    'ID' => $user->ID,
    'login' => $user->user_login,
    'email' => $user->user_email
  ];
}

Безопасность при работе с REST API WordPress

REST API открывает множество возможностей, но требует внимания к безопасности:

  • Используйте nonce для защиты POST/PUT/DELETE запросов;
  • Настраивайте permission_callback для собственных маршрутов;
  • Ограничивайте публичные данные, не раскрывайте лишнюю информацию;
  • Проверяйте и фильтруйте входящие данные;
  • Отключайте REST API полностью или частично, если он не нужен.

Для отключения REST API для неавторизованных пользователей можно добавить в functions.php:

add_filter('rest_authentication_errors', function($result) {
  if (!empty($result)) {
    return $result;
  }
  if (!is_user_logged_in()) {
    return new WP_Error('rest_cannot_access', 'Доступ запрещён', ['status' => 401]);
  }
  return $result;
});

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

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

  • WP REST API Controller — удобный интерфейс для управления доступом к REST API и кастомными типами записей;
  • JWT Authentication for WP REST API — добавляет поддержку JSON Web Token для безопасности;
  • Advanced Custom Fields to REST API — расширяет данные REST API, добавляя поля ACF;
  • REST API Toolbox — инструмент для настройки и ограничения REST API запросов.

Использование этих плагинов позволяет быстро и гибко настраивать API под свои задачи.

Как отключить AJAX-загрузку в Gutenberg блоках WordPress
02.04.2026
Как добавить уникальные поля для продажи товаров в WooCommerce
04.03.2026
Автоматическое удаление старых записей в WordPress через cron с примерами
25.02.2026
Как добавить собственные свойства в meta-теги WordPress
10.11.2025
Как сделать автоматический экспорт постов WordPress в Excel
30.03.2026