WordPress: диагностика CPT и REST (get_post_type_object)
Временный mu-plugin: логирование show_in_rest, rest_base и rest_controller_class для типа записи. Для поиска причины 404 в REST API.
Как использовать
- Создайте wp-content/mu-plugins/_debug-cpt.php. Включите WP_DEBUG_LOG в wp-config.php.
- Загрузите любую страницу сайта (лучше админку). Откройте wp-content/debug.log.
- Если show_in_rest=0 — маршрут в wp/v2 не создаётся; проверьте регистрацию CPT и параметр show_in_rest.
Проверка, что WordPress видит тип записи с нужными REST-параметрами. Функция get_post_type_object() возвращает объект типа; свойства show_in_rest, rest_base, rest_controller_class определяют наличие маршрута в REST API.
Код
<?php
declare(strict_types=1);
add_action('init', static function (): void {
$obj = get_post_type_object('item');
if (!$obj) {
error_log('CPT item: NOT registered');
return;
}
error_log('CPT item: show_in_rest=' . (int) $obj->show_in_rest);
error_log('CPT item: rest_base=' . (string) $obj->rest_base);
error_log('CPT item: rest_controller_class=' . (string) $obj->rest_controller_class);
}, 999);
Замечания
- Замените
'item'на slug вашего CPT. Приоритет 999 — чтобы тип уже был зарегистрирован. - После диагностики удалите или переименуйте файл в
mu-plugins, чтобы не засорять лог.
Подробнее: Как включить CPT в REST API WordPress: /wp/v2 отдаёт 404.