Действие ловушка для регистрации пользовательских типов сообщений с Wordpress Rest API - PullRequest
0 голосов
/ 01 октября 2019

У меня есть несколько пользовательских типов записей, которые я использую с API WordPress Rest. В настоящее время они используют add_action('init'), однако изначально генерируется уведомление PHP. PHP Notice: Trying to get property 'name' of non-object in /home/sites/1a/c/c47f5c7ed3/staging_html/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php on line 46, который соответствует этому конструктору

public function __construct( $post_type ) {
        $this->post_type = $post_type;
        $this->namespace = 'wp/v2';
        $obj             = get_post_type_object( $post_type );
        $this->rest_base = ! empty( $obj->rest_base ) ? $obj->rest_base : $obj->name;

        $this->meta = new WP_REST_Post_Meta_Fields( $this->post_type );
    }

Похоже, что изначально мой пользовательский тип записи не добавляется в global $wp_post_types, и эта функция get_post_type_object возвращает ноль. В соответствии с рекомендациями рекомендуется инициализировать CPT с помощью действия init.

Кто-нибудь сталкивался с этой проблемой и как вы ее исправили - нужно ли регистрировать мои CPT на ловушке действия, которая запускается позже? Я не могу изменить конструктор, потому что это основной файл WP

...