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

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

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

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

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

Для примера, эндпоинт /wp-json/wp/v2/posts возвращает список постов в формате JSON.

Основные эндпоинты REST API WordPress и их использование

Давайте рассмотрим ключевые эндпоинты, которые пригодятся для отображения контента:

  • /wp-json/wp/v2/posts — получение списка постов.
  • /wp-json/wp/v2/pages — получение страниц.
  • /wp-json/wp/v2/categories — категории постов.
  • /wp-json/wp/v2/comments — комментарии.

Для получения конкретного поста используется запрос с ID, например: /wp-json/wp/v2/posts/123.

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

fetch('https://example.com/wp-json/wp/v2/posts')
  .then(response => response.json())
  .then(data => console.log(data));

Этот код загрузит список постов и выведет их в консоль браузера.

Как отобразить данные REST API на сайте WordPress с помощью AJAX

Часто нужно вывести данные из REST API прямо на странице без перезагрузки. Рассмотрим простой пример на jQuery для вывода списка последних 5 постов.

jQuery(document).ready(function($) {
  $.ajax({
    url: '/wp-json/wp/v2/posts?per_page=5',
    method: 'GET',
    success: function(posts) {
      var output = '';
      posts.forEach(function(post) {
        output += '<h3><a href="' + post.link + '">' + post.title.rendered + '</a></h3>';
      });
      $('#wp3-posts-container').html(output);
    },
    error: function() {
      $('#wp3-posts-container').html('<p>Ошибка загрузки постов.</p>');
    }
  });
});

В HTML необходимо добавить контейнер для вывода:

<div id="wp3-posts-container"></div>

Этот код динамически загрузит и отобразит заголовки последних 5 постов.

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

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

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

function wp3_register_custom_endpoint() {
  register_rest_route('wp3/v1', '/categories-count', array(
    'methods' => 'GET',
    'callback' => 'wp3_get_categories_count',
  ));
}
add_action('rest_api_init', 'wp3_register_custom_endpoint');

function wp3_get_categories_count() {
  $categories = get_categories();
  $result = array();
  foreach ($categories as $cat) {
    $result[] = array(
      'name' => $cat->name,
      'count' => $cat->count
    );
  }
  return $result;
}

Теперь запрос /wp-json/wp3/v1/categories-count вернёт JSON с названиями категорий и количеством постов.

Пример использования кастомного эндпоинта на фронтенде

Для вывода данных нового эндпоинта воспользуемся JavaScript:

fetch('/wp-json/wp3/v1/categories-count')
  .then(response => response.json())
  .then(data => {
    let html = '<ul>';
    data.forEach(cat => {
      html += '<li>' + cat.name + ': ' + cat.count + ' постов</li>';
    });
    html += '</ul>';
    document.getElementById('wp3-categories').innerHTML = html;
  })
  .catch(() => {
    document.getElementById('wp3-categories').innerHTML = '<p>Не удалось загрузить категории.</p>';
  });

Добавьте в HTML:

<div id="wp3-categories"></div>

Плагины для расширения возможностей REST API WordPress

Если нужно расширить функционал REST API без написания кода, обратите внимание на плагины:

  • Clearfy Pro — оптимизация и расширение API, отключение ненужных эндпоинтов и скрытие информации.
  • WPRemark — для улучшенного управления комментариями через REST API.
  • WPGPT — для интеграции ИИ и генерации контента с использованием API.

Безопасность и ограничения при работе с REST API

При работе с REST API важно учитывать вопросы безопасности. По умолчанию, стандартные эндпоинты открыты для чтения, но операции записи требуют авторизации. Для защиты можно:

  • Ограничить доступ к определённым эндпоинтам с помощью плагинов или фильтров.
  • Использовать nonce и OAuth для проверки авторизации.
  • Отключать ненужные эндпоинты, чтобы уменьшить поверхность атаки.

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

function wp3_disable_rest_api_for_guests($access) {
  if (!is_user_logged_in()) {
    return new WP_Error('rest_cannot_access', 'REST API доступен только авторизованным пользователям.', array('status' => 401));
  }
  return $access;
}
add_filter('rest_authentication_errors', 'wp3_disable_rest_api_for_guests');

Выводы и практические рекомендации

Использование REST API в WordPress даёт огромные возможности по созданию современных, динамичных сайтов. Чтобы быстро начать:

  • Изучите стандартные эндпоинты и попробуйте загрузить данные через fetch или AJAX.
  • Создайте собственные эндпоинты для кастомных данных с помощью register_rest_route.
  • Обеспечьте безопасность, ограничив доступ к критичным данным.
  • Используйте готовые плагины из WPSHOP для упрощения работы с API.

Такой подход поможет вам создавать гибкие и масштабируемые решения на базе WordPress.

Как автоматизировать публикацию постов в WordPress
21.01.2026
Как отключить автообновление корзины в WooCommerce без потери функционала
09.06.2026
Как удалить неиспользуемые мета-данные в WordPress
08.12.2025
Как добавить автоматический релиз постов в WordPress с помощью Cron
15.04.2026
Как создать свой виджет в WordPress с примерами кода
04.12.2025