Как добавить категорию в REST API WordPress: практическое руководство

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

Почему важно добавить категории в REST API WordPress

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

Добавление категорий в REST API позволяет:

  • Получать список категорий с их описаниями и метаданными
  • Создавать, обновлять и удалять категории через запросы API
  • Фильтровать записи по категориям с помощью REST запросов

Далее рассмотрим, как настроить регистрацию категорий для работы с REST API на практике.

Добавление поддержки категорий в REST API — базовый пример

WordPress по умолчанию регистрирует таксономию category с параметром show_in_rest равным true. Однако в некоторых случаях темы или плагины могут переопределять этот параметр или регистрировать кастомные таксономии без поддержки REST API. Чтобы убедиться, что категории доступны в API, можно добавить следующий код в файл functions.php вашей темы или в отдельный плагин:

add_action('init', 'wpsnippets_register_category_rest_support', 30); 
function wpsnippets_register_category_rest_support() {
    global $wp_taxonomies;
    if (isset($wp_taxonomies['category'])) {
        $wp_taxonomies['category']->show_in_rest = true;
        $wp_taxonomies['category']->rest_base = 'categories';
        $wp_taxonomies['category']->rest_controller_class = 'WP_REST_Terms_Controller';
    }
}

Этот код гарантирует, что таксономия «category» будет доступна в REST API по базовому пути /wp-json/wp/v2/categories. Вы сможете получать список категорий GET-запросом, создавать новые категории с POST и обновлять с PUT или PATCH.

Пример получения списка категорий через REST API

Для получения всех категорий отправьте GET-запрос на:

https://ваш-сайт/wp-json/wp/v2/categories

Ответ будет содержать JSON-массив с категориями, включая ID, название, описание и slug.

Создание новой категории через REST API

Для создания категории отправьте POST-запрос с данными:

POST /wp-json/wp/v2/categories
Content-Type: application/json
Authorization: Bearer ваш_токен

{
  "name": "Новая категория",
  "description": "Описание новой категории",
  "slug": "novaya-kategoriya"
}

Обратите внимание, что для создания и редактирования категорий требуется авторизация с правами администратора или редактора.

Расширение REST API для кастомных полей категорий

В стандартной выдаче REST API для категорий не включены кастомные поля (meta). Если вы используете дополнительные поля для категорий, например, через плагин Advanced Custom Fields (ACF) или стандартные метаполя, их можно добавить в ответ API.

Пример добавления метаполя category_color в ответ REST API:

add_action('rest_api_init', function() {
    register_rest_field('category', 'category_color', [
        'get_callback' => 'wpsnippets_get_category_color',
        'update_callback' => 'wpsnippets_update_category_color',
        'schema' => [
            'description' => 'Цвет категории',
            'type' => 'string',
            'context' => ['view', 'edit'],
        ],
    ]);
});

function wpsnippets_get_category_color($object) {
    $term_id = $object['id'];
    return get_term_meta($term_id, 'category_color', true);
}

function wpsnippets_update_category_color($value, $object) {
    if (!is_string($value)) {
        return new WP_Error('rest_invalid_param', 'Цвет должен быть строкой', ['status' => 400]);
    }
    $term_id = $object->term_id;
    return update_term_meta($term_id, 'category_color', sanitize_text_field($value));
}

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

Использование плагинов для расширения работы с категориями в REST API

Если вы предпочитаете не писать код, можно использовать готовые плагины с поддержкой REST API для таксономий. Например:

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

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

Фильтрация записей по категориям через REST API

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

GET /wp-json/wp/v2/posts?categories=12

где 12 — ID нужной категории. Можно передавать несколько ID через запятую для выборки записей из нескольких категорий.

Если у вас кастомные типы записей, убедитесь, что они поддерживают таксономию «category» или зарегистрируйте свою таксономию с show_in_rest = true.

Советы по безопасности и производительности

Работа с REST API требует правильной настройки прав доступа. Убедитесь, что изменение категорий доступно только авторизованным пользователям с нужными ролями. Используйте nonce или OAuth токены для авторизации запросов.

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

Заключение

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

Если хотите ускорить разработку и получить дополнительные возможности по работе с REST API, обратите внимание на Clearfy Pro и другие решения из каталога WPSHOP.

WordPress: как добавить уникальное поле в REST API с проверкой уникальности
20.03.2026
Как изменить автоматический slug в WordPress: практические решения и примеры кода
29.12.2025
WooCommerce: как использовать хуки для изменения статей оплаты
07.05.2026
Как изменить AJAX обработку формы в WordPress на REST API
13.02.2026
Как отключить XML-RPC в WordPress без плагинов
09.02.2026