WORDPRESS
#wordpress#custom-post-type#rest-api#debug#mu-plugin#get_post_type_object

WordPress: диагностика CPT и REST (get_post_type_object)

Временный mu-plugin: логирование show_in_rest, rest_base и rest_controller_class для типа записи. Для поиска причины 404 в REST API.

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

  1. Создайте wp-content/mu-plugins/_debug-cpt.php. Включите WP_DEBUG_LOG в wp-config.php.
  2. Загрузите любую страницу сайта (лучше админку). Откройте wp-content/debug.log.
  3. Если 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.