WORDPRESS
#wordpress#custom-post-type#rest-api#mu-plugin#show_in_rest#production

WordPress: CPT с REST API в mu-plugin

Регистрация Custom Post Type с show_in_rest в must-use плагине. Не зависит от темы, подходит для prod. По документации register_post_type().

Как использовать

  1. Создайте файл wp-content/mu-plugins/cpt-item.php (папку mu-plugins создайте при необходимости).
  2. Скопируйте код. Замените 'item' и 'items' на свой тип и rest_base.
  3. Проверьте: curl -s https://ваш-сайт/wp-json/wp/v2/types и GET /wp-json/wp/v2/items.

MU-plugin гарантирует, что CPT и REST-маршрут загружаются при любой активной теме. Источники: register_post_type(), Adding REST API support for custom content types.

Код

<?php
/**
 * Plugin Name: MU: Item CPT (REST enabled)
 */
declare(strict_types=1);

add_action('init', static function (): void {
    register_post_type('item', [
        'label'        => 'Items',
        'public'       => true,
        'show_in_rest' => true,
        'rest_base'    => 'items',
        'rest_controller_class' => WP_REST_Posts_Controller::class,
        'supports'     => ['title', 'editor'],
    ]);
}, 10);

Замечания

  • Имя файла в mu-plugins может быть любым (например, cpt-portfolio.php). Главное — заголовок Plugin Name для отображения в списке плагинов (опционально).
  • После добавления откройте «Настройки → Постоянные ссылки» и нажмите «Сохранить», если маршрут не появляется.

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