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

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

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

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

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

Как получить базовые данные через REST API WordPress

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

https://example.com/wp-json/wp/v2/posts

Ответ приходит в формате JSON и содержит массив объектов с информацией о постах (заголовок, дата, автор и др.). Вы можете использовать этот запрос в браузере, curl или в любом HTTP-клиенте.

Если необходимо получить конкретный пост по ID, запрос будет выглядеть так:

https://example.com/wp-json/wp/v2/posts/123

Кроме постов, доступны другие стандартные типы данных: страницы (/wp/v2/pages), категории, теги и пользователи. Это удобный способ быстро получить данные без дополнительного программирования.

Расширение REST API для получения кастомных полей (ACF и не только)

Стандартный REST API не возвращает данные из произвольных полей (custom fields), что часто необходимо для кастомных тем и плагинов. Рассмотрим, как добавить эти поля в ответ API.

Добавление произвольных полей вручную

Допустим, у нас есть пользовательское поле wpnote_custom_field, и мы хотим, чтобы оно возвращалось вместе с данными поста. Для этого в файле функций темы (functions.php) или в своем плагине добавляем следующий код:

function wpnote_register_custom_fields() {
  register_rest_field('post', 'custom_field', [
    'get_callback' => function($post) {
      return get_post_meta($post['id'], 'wpnote_custom_field', true);
    },
    'schema' => null,
  ]);
}
add_action('rest_api_init', 'wpnote_register_custom_fields');

Теперь при запросе /wp-json/wp/v2/posts каждый объект поста будет содержать дополнительное поле custom_field с нужным значением. Таким образом можно добавлять любые свои метаданные.

Интеграция с Advanced Custom Fields (ACF)

Если вы используете плагин ACF, он предоставляет собственный способ добавить поля в REST API. Для этого нужно включить поддержку REST API в настройках ACF (опция «Show in REST API» для каждого поля) или использовать следующий код:

function wpnote_acf_to_rest_api() {
  // добавляем все поля ACF к типу записи 'post'
  register_rest_field('post', 'acf', [
    'get_callback' => function($post) {
      return get_fields($post['id']);
    },
    'schema' => null,
  ]);
}
add_action('rest_api_init', 'wpnote_acf_to_rest_api');

После этого в JSON-ответе будет ключ acf с объектом всех пользовательских полей ACF. Это значительно упрощает работу с метаданными.

Создание собственного эндпоинта REST API: пример с выводом пользователей

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

Вот пример, как это сделать:

function wpnote_register_custom_endpoint() {
  register_rest_route('wpnote/v1', '/users/', [
    'methods' => 'GET',
    'callback' => 'wpnote_get_users',
    'permission_callback' => function () {
      return current_user_can('list_users');
    }
  ]);
}
add_action('rest_api_init', 'wpnote_register_custom_endpoint');

function wpnote_get_users($request) {
  $args = [
    'role' => 'subscriber',
    'number' => 10
  ];
  $user_query = new WP_User_Query($args);
  $users = [];
  foreach ($user_query->get_results() as $user) {
    $users[] = [
      'ID' => $user->ID,
      'display_name' => $user->display_name,
      'email' => $user->user_email
    ];
  }
  return rest_ensure_response($users);
}

Этот эндпоинт будет доступен по адресу /wp-json/wpnote/v1/users/ и вернет список подписчиков с их именами и email. В данном примере также реализована проверка прав доступа, что важно для безопасности.

Проверка и обработка параметров запроса в REST API

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

function wpnote_get_users($request) {
  $role = $request->get_param('role') ?: 'subscriber';
  $args = [
    'role' => sanitize_text_field($role),
    'number' => 10
  ];
  $user_query = new WP_User_Query($args);
  $users = [];
  foreach ($user_query->get_results() as $user) {
    $users[] = [
      'ID' => $user->ID,
      'display_name' => $user->display_name,
      'email' => $user->user_email
    ];
  }
  return rest_ensure_response($users);
}

Теперь можно сделать запрос /wp-json/wpnote/v1/users?role=editor и получить список редакторов. Важно всегда фильтровать и валидировать входные данные для безопасности.

Практические советы для работы с REST API в WordPress

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

  • Кэширование. Частые запросы к API могут создавать нагрузку на сервер, поэтому используйте кэширование на уровне сервера или сторонние плагины.
  • Безопасность. Всегда проверяйте права доступа в permission_callback, особенно если API возвращает конфиденциальные данные.
  • Формат данных. Стандартно используется JSON, но при необходимости можно настроить другие форматы.
  • Документация. Используйте плагины для генерации документации по своим кастомным эндпоинтам, например, WP REST API Controller.
  • Отладка. Для проверки запросов удобно использовать Postman или аналогичные инструменты.

Заключение

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

Оптимизация базы данных WordPress: удаление старых записей и оптимальная структура
03.04.2026
Как использовать WPCommunity для создания форума на WordPress
23.02.2026
Как сделать автоматическое удаление старых черновиков в WordPress
12.03.2026
Как отключить Gutenberg и вернуть классический редактор в WordPress
04.01.2026
Как избежать конфликтов плагинов в WordPress: практические решения и советы
15.12.2025