Установить условия объекта, не работающие с активацией плагина

Я пытаюсь создать пару пользовательских сообщений и установить для них режим таксономии при активации плагина. Для этого я использую ключ активации плагина регистрации. Сообщения создаются должным образом, но я не назначаю пост. Я использую wp_set_object_terms для этого. Что может быть причиной?

Мой код напоминает это:

 register_activation_hook( __FILE__, 'insert_latest_books' ); public function insert_latest_books() { //Get the latest books $data = new Data_Fetcher(); $latest_books = $data->get_latest_books(); foreach($latest_books as $latest_book) { //Create a book post for each latest book $book = [ 'post_type' => 'book', 'post_status' => 'publish', 'post_title' => $latest_book->name, 'post_content' => $latest_book->description ]; $book_id = wp_insert_post($book); //TODO: Not working on plugin activation wp_set_object_terms($book_id, array('latest'), 'label'); set_book_thumbnail($book_id, $latest_book->name, $latest_book->preview_image_url); update_post_meta($book_id, 'book_code', $latest_book->embed_code); update_post_meta($book_id, 'book_pages', $latest_book->length); } } 

Solutions Collecting From Web of "Установить условия объекта, не работающие с активацией плагина"

register_activation_hook – одноразовый только крючок активации. Его можно использовать для создания структуры базы данных, например, для запуска только триггера активации плагина.

Чтобы настроить пользовательскую таксономию, вам нужен крючок, который будет срабатывать не один раз, а за каждый загрузчик WordPress. Например, init .

Используйте add_action( 'init', 'YOUR_CALLBACK' ); для достижения этого

Я узнал из комментариев @Pieter Goosen и @ Ignat.B и ответа @Pieter Goosen здесь , что мне нужно зарегистрировать таксономию активации плагина и вставить этот термин. Затем мне нужно связать код регистрации таксономии с крючком инициации, как это было предложено кодом. Это гарантирует, что когда я вставляю термин при активации плагина, у меня уже зарегистрирована таксономия, и с init я следую инструкции WordPress для использования init для этой цели.

Псевдокод:

 function register_tax() { //Register the taxonomy } function activate() { register_tax(); wp_insert_term(...); } register_activation_hook('...', 'activate'); add_action('init', 'register_tax'); 

Надеюсь, это поможет кому-то застрять в подобной ситуации. Ответ Питера действительно полезен, если вам нужно объяснение.