У меня есть несколько пользовательских типов записей, которые я использую с 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