Как использовать REST API в WordPress для расширения функционала

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

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

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

Для разработчиков, работающих с WordPress, понимание REST API становится обязательным навыком, особенно если хочется уйти от классической PHP-разработки и строить современные, быстрые и масштабируемые решения.

Основы работы с REST API: запросы и ответы

REST API работает через HTTP-методы: GET (получение данных), POST (создание), PUT/PATCH (обновление) и DELETE (удаление). Для примера, чтобы получить список всех постов, достаточно отправить GET-запрос на адрес /wp-json/wp/v2/posts.

Пример запроса с помощью fetch на JavaScript:

fetch('https://ваш-домен/wp-json/wp/v2/posts')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Ошибка:', error));

Ответ возвращается в формате JSON, что удобно для дальнейшей обработки в JavaScript или других языках программирования. Каждый объект поста содержит стандартные поля, такие как id, title, content, date и др.

Для создания нового поста используется метод POST, при этом необходимо передавать заголовок, содержимое и другие параметры, а также аутентифицироваться (например, через OAuth или JWT). Без авторизации сервер ответит ошибкой.

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

Основное преимущество REST API — возможность создавать свои маршруты и контроллеры, которые выполняют уникальные задачи. Для этого достаточно зарегистрировать новый маршрут через функцию register_rest_route. Рассмотрим на примере, как создать эндпоинт, который возвращает список последних 5 популярных постов.

add_action('rest_api_init', 'wpdirect_register_popular_posts_endpoint');
function wpdirect_register_popular_posts_endpoint() {
  register_rest_route('wpdirect/v1', '/popular-posts/', array(
    'methods' => 'GET',
    'callback' => 'wpdirect_get_popular_posts',
    'permission_callback' => '__return_true',
  ));
}

function wpdirect_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;
}

Этот код добавляет новый маршрут /wp-json/wpdirect/v1/popular-posts/, который возвращает 5 самых популярных постов по количеству просмотров, хранящемуся в мета-поле post_views_count. Такой подход позволяет создавать любые специфические API для вашего сайта.

Как отслеживать количество просмотров поста

Чтобы мета-поле post_views_count корректно отражало просмотры, нужно добавить счетчик. Пример простого решения:

function wpdirect_set_post_views($postID) {
  $count = get_post_meta($postID, 'post_views_count', true);
  if($count=='') {
    $count = 0;
    delete_post_meta($postID, 'post_views_count');
    add_post_meta($postID, 'post_views_count', '1');
  } else {
    $count++;
    update_post_meta($postID, 'post_views_count', $count);
  }
}

// Вызовите эту функцию в single.php при загрузке поста
if(is_single()) {
  wpdirect_set_post_views(get_the_ID());
}

Этот код увеличивает счетчик просмотров при каждом открытии записи, что позволяет использовать данные для сортировки на REST API.

Безопасность и аутентификация в REST API

По умолчанию большинство GET-запросов доступны публично, но операции изменения данных требуют аутентификации. В WordPress есть несколько способов авторизации: cookie, OAuth, JWT (JSON Web Tokens) и Basic Auth.

Рассмотрим пример использования JWT для защищенных запросов. Сначала нужно установить плагин JWT Authentication for WP REST API. После настройки плагина вы получаете токен, отправляя POST-запрос с логином и паролем:

POST /wp-json/jwt-auth/v1/token
{
  "username": "user",
  "password": "pass"
}

В ответ придет токен, который нужно передавать в заголовке Authorization: Bearer ваш_токен при отправке защищенных запросов.

При регистрации своих эндпоинтов не забывайте про permission_callback, в котором проверяйте права пользователя, например:

'permission_callback' => function () {
  return current_user_can('edit_posts');
}

Это предотвратит несанкционированный доступ и защитит ваш сайт от злоумышленников.

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

  • WP REST API Controller — визуальный инструмент для настройки доступа и видимости REST API эндпоинтов без программирования.
  • Advanced Custom Fields (ACF) — с плагином ACF REST API можно легко получать и отправлять данные кастомных полей через API.
  • JWT Authentication for WP REST API — плагин для добавления поддержки авторизации по JWT.
  • WP OAuth Server — позволяет реализовать OAuth2 сервер для безопасного доступа к API.

Эти инструменты помогут упростить и обезопасить работу с REST API, особенно если вы планируете интегрировать WordPress с внешними системами.

Практические советы и рекомендации по развитию REST API проектов

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

Для кэширования можно применять Transients API или внешние системы, например Redis. Это особенно актуально для популярных и часто запрашиваемых эндпоинтов.

Также рекомендуется документировать ваши собственные API маршруты с помощью специальных инструментов или комментариев, чтобы упростить поддержку и развитие проекта.

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

WooCommerce: автоматическое изменение статуса заказа при неудачной оплате
12.06.2026
WooCommerce: автоматическое удаление отсутствующих товаров по расписанию
03.07.2026
Как создать динамическую форму обратной связи в WordPress
04.12.2025
Как создать автоматический импорт данных из Excel в WordPress
25.12.2025
Как автоматически менять статус заказа WooCommerce по условиям: решение проблемы с неработающим обновлением
29.04.2026