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

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

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

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

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

  • Создание одностраничных приложений (SPA) на React, Vue или Angular, которые общаются с WordPress как с бекендом.
  • Интеграция сайта с мобильными приложениями.
  • Автоматизация управления контентом через сторонние сервисы.
  • Расширение стандартных эндпоинтов кастомными для специфических задач.

Как работать с базовыми эндпоинтами WordPress REST API

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

  • /wp-json/wp/v2/posts — для работы с записями.
  • /wp-json/wp/v2/pages — для страниц.
  • /wp-json/wp/v2/users — для пользователей.

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

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

Для создания новой записи требуется авторизация и отправка POST-запроса с необходимыми полями.

Пример создания записи через REST API с использованием Basic Auth

Для тестирования можно использовать плагин Application Passwords, который позволяет создавать пароли для REST API.

fetch('https://wpmentor.ru/wp-json/wp/v2/posts', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Basic ' + btoa('username:application_password')
  },
  body: JSON.stringify({
    title: 'Тестовая запись через REST API',
    content: 'Содержимое записи',
    status: 'publish'
  })
})
.then(response => response.json())
.then(data => console.log(data));

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

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

Рассмотрим простой пример создания кастомного маршрута, который возвращает список популярных постов:

add_action('rest_api_init', function () {
  register_rest_route('wpmentor/v1', '/popular-posts/', [
    'methods' => 'GET',
    'callback' => 'wpmentor_get_popular_posts',
  ]);
});

function wpmentor_get_popular_posts() {
  $args = [
    'posts_per_page' => 5,
    'meta_key' => 'post_views_count',
    'orderby' => 'meta_value_num',
    'order' => 'DESC'
  ];
  $query = new WP_Query($args);
  $posts = [];
  foreach ($query->posts as $post) {
    $posts[] = [
      'id' => $post->ID,
      'title' => get_the_title($post->ID),
      'views' => get_post_meta($post->ID, 'post_views_count', true),
    ];
  }
  return $posts;
}

Этот код регистрирует эндпоинт /wp-json/wpmentor/v1/popular-posts/, который возвращает JSON с пятью постами, отсортированными по количеству просмотров.

Добавление параметров в кастомные эндпоинты

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

add_action('rest_api_init', function () {
  register_rest_route('wpmentor/v1', '/popular-posts/', [
    'methods' => 'GET',
    'callback' => 'wpmentor_get_popular_posts',
    'args' => [
      'category' => [
        'validate_callback' => function($param) {
          return is_numeric($param);
        }
      ]
    ]
  ]);
});

function wpmentor_get_popular_posts(WP_REST_Request $request) {
  $category = $request->get_param('category');
  $args = [
    'posts_per_page' => 5,
    'meta_key' => 'post_views_count',
    'orderby' => 'meta_value_num',
    'order' => 'DESC'
  ];
  if ($category) {
    $args['cat'] = intval($category);
  }
  $query = new WP_Query($args);
  $posts = [];
  foreach ($query->posts as $post) {
    $posts[] = [
      'id' => $post->ID,
      'title' => get_the_title($post->ID),
      'views' => get_post_meta($post->ID, 'post_views_count', true),
    ];
  }
  return $posts;
}

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

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

  • Application Passwords — позволяет создавать пароли пользователя для авторизации в REST API без необходимости вводить логин и пароль.
  • WP REST API Controller — визуально настраивает доступные эндпоинты и поля в API.
  • REST API Log — логирует все запросы к REST API, что удобно для отладки.

Используя эти инструменты, вы сможете существенно упростить интеграцию и разработку.

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

Очень важно помнить, что многие методы REST API требуют авторизации, особенно если речь идет о создании, обновлении или удалении данных. WordPress поддерживает несколько способов авторизации:

  • Cookie-based (используется в админке).
  • OAuth 1.0a (сложно настроить, редко применяется).
  • Basic Auth (подходит для тестирования, не рекомендуется на продакшене без HTTPS).
  • Application Passwords — рекомендуемый способ для API.

Также можно реализовать собственные механизмы авторизации и проверки прав доступа в кастомных эндпоинтах, используя возможности класса WP_REST_Request и хуков.

Пример проверки прав в кастомном эндпоинте

register_rest_route('wpmentor/v1', '/secure-data/', [
  'methods' => 'GET',
  'callback' => 'wpmentor_get_secure_data',
  'permission_callback' => function() {
    return current_user_can('edit_posts');
  }
]);

function wpmentor_get_secure_data() {
  return ['data' => 'Секретная информация'];
}

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

Практическое применение REST API WordPress: интеграция с внешним React приложением

Рассмотрим кратко пример, как можно использовать REST API для создания фронтенда на React, который будет подгружать и отображать записи с сайта.

В React компоненте можно сделать так:

import React, { useEffect, useState } from 'react';

function PostsList() {
  const [posts, setPosts] = useState([]);

  useEffect(() => {
    fetch('https://wpmentor.ru/wp-json/wp/v2/posts?per_page=10')
      .then(res => res.json())
      .then(data => setPosts(data));
  }, []);

  return (
    <div>
      <h2>Список последних записей</h2>
      <ul>
        {posts.map(post => (
          <li key={post.id} dangerouslySetInnerHTML={{ __html: post.title.rendered }} />
        ))}
      </ul>
    </div>
  );
}

export default PostsList;

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

Заключение

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

Как создать и использовать shortcode в WordPress
30.11.2025
Как удалить версии записей в WordPress для оптимизации базы данных
18.11.2025
Как удалить ревизии записей в WordPress с помощью плагинов и кода
13.02.2026
Как создать динамические таблицы в WordPress с помощью shortcode
10.12.2025
Как использовать WP-Cron для автоматического удаления нерабочих вариантов заказов WooCommerce
26.04.2026