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

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

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

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

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

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

Для получения списка постов достаточно отправить GET-запрос на адрес https://ваш-сайт/wp-json/wp/v2/posts. Пример с помощью fetch в JavaScript:

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

В ответ вы получите JSON-массив с постами, содержащий заголовки, даты, содержимое и другую метаинформацию.

Для получения конкретного поста по ID запрос будет выглядеть так: GET https://wpnews.ru/wp-json/wp/v2/posts/123.

Фильтрация и пагинация

REST API позволяет фильтровать результаты. Например, получить 5 последних опубликованных постов в категории с ID 10:

https://wpnews.ru/wp-json/wp/v2/posts?categories=10&per_page=5&status=publish

Обратите внимание, что некоторые параметры, например, фильтры по произвольным полям, требуют расширения API.

Создание новых записей через REST API с аутентификацией

Для создания или редактирования данных необходима аутентификация. Чаще всего используют Basic Auth или OAuth. Для разработки удобно использовать плагин Application Passwords или JWT Authentication for WP REST API.

Пример создания поста с помощью Basic Auth и fetch:

fetch('https://wpnews.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));

Важно: никогда не храните пароли в открытом виде в клиентском коде. Для безопасных решений используйте серверные прокси или OAuth.

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

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

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

add_action('rest_api_init', function () {
  register_rest_route('wpnews/v1', '/current-user', [
    'methods' => 'GET',
    'callback' => 'wpnews_get_current_user',
    'permission_callback' => function () {
      return is_user_logged_in();
    }
  ]);
});

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

Теперь запрос GET https://wpnews.ru/wp-json/wpnews/v1/current-user вернёт данные текущего пользователя, если он авторизован.

Параметры и обработка ошибок

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

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

Для удобства и расширения функционала можно использовать:

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

Интеграция REST API WordPress с фронтендом на React

REST API идеально подходит для построения SPA на React, Vue или Angular. Пример простого React-компонента для загрузки и отображения заголовков последних постов:

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

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

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

  return (
    <div>
      <h2>Последние посты</h2>
      <ul>
        {posts.map(post => (
          <li key={post.id}>{
            post.title.rendered
          }</li>
        ))}
      </ul>
    </div>
  );
}

export default WpnewsPostList;

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

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

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

  • Используйте permission_callback для проверки прав на каждом маршруте.
  • Настройте аутентификацию через OAuth или JWT, а не Basic Auth в продакшене.
  • Ограничьте видимость личных данных.
  • Обновляйте WordPress и плагины, чтобы избежать уязвимостей.

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

Как создать поддержку многоязычности в WordPress без плагинов
18.11.2025
WPNews: Как удалить все комментарии с одного поста в WordPress
06.12.2025
Как создать автоматическое резервное копирование WordPress с помощью плагинов и кода
02.12.2025
Оптимизация базы данных WordPress: удаляем старые ревизии и чистим базу
15.11.2025
Как создать подробный лог для отладки в WordPress
21.11.2025