WordPress: CPT с REST API в mu-plugin
Регистрация Custom Post Type с show_in_rest в must-use плагине. Не зависит от темы, подходит для prod. По документации register_post_type().
Как использовать
- Создайте файл wp-content/mu-plugins/cpt-item.php (папку mu-plugins создайте при необходимости).
- Скопируйте код. Замените 'item' и 'items' на свой тип и rest_base.
- Проверьте: 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.