Intereting Posts
Как использовать массив в функции, чтобы получить только значение, которое я хочу Такое же меню для разных таксономий для достижения различного контента Как ограничить поиск на определенной странице только для того, чтобы возвращать результаты против пользовательских таксономий? Добавить последний столбец «Редакция столбца» в панели администратора Добавление общего содержимого страницы в шаблоны страниц Пользовательские постоянные ссылки WordPress не работают на OS X localhost Как изменить entry-content.php, чтобы он отображал только первый элемент сообщения в блоге? Woocommerce single_product_summary hook не работает Как сначала показать должности какой-то категории, а затем остальные? Не могу определить кодировку Как я могу контролировать позицию в меню администратора элементов, добавленных плагинами? Указание размера при отображении изображения, связанного с таксономией через ACF Добавьте # перед каждым тегом 'category__and' для пользовательской таксономии? get_page_templates возвращают только шаблоны с "home" в имени файла Как обновить тему живых сайтов из репозитория контроля версий через плагин или библиотеку?

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

Я пытаюсь создать пару пользовательских сообщений и установить для них режим таксономии при активации плагина. Для этого я использую ключ активации плагина регистрации. Сообщения создаются должным образом, но я не назначаю пост. Я использую 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'); 

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