Сниппеты
Назад к сниппетам

WordPress: CPT с REST API в теме (functions.php)

Минимальная регистрация Custom Post Type с show_in_rest, rest_base и WP_REST_Posts_Controller. По официальной документации register_post_type().

wordpress
16 февраля 2026 г.

Регистрация CPT с поддержкой REST API и редактора блоков (Gutenberg). Параметры show_in_rest, rest_base, rest_controller_class описаны в register_post_type() и в Adding REST API support for custom content types.

Код

<?php
declare(strict_types=1);

add_action('init', static function (): void {
    $labels = [
        'name'          => __('Items', 'your-textdomain'),
        'singular_name' => __('Item', 'your-textdomain'),
    ];

    register_post_type('item', [
        'labels'       => $labels,
        'public'       => true,
        'has_archive'  => true,

        // REST API и Gutenberg
        'show_in_rest' => true,
        'rest_base'    => 'items',
        'rest_controller_class' => WP_REST_Posts_Controller::class,

        'supports'     => ['title', 'editor', 'excerpt', 'thumbnail'],
    ]);
});

Замечания

  • Для продакшена предпочтительно выносить CPT в mu-plugin, чтобы смена темы не отключала REST-маршрут.
  • Если endpoint возвращает 404, проверьте наличие типа в /wp-json/wp/v2/types и сбросьте постоянные ссылки.

Подробнее: Как включить CPT в REST API WordPress: /wp/v2 отдаёт 404.