Как зарегистрировать таксономию детей?


  1. Должен ли я зарегистрировать и родителя, и ребенка как 'hierarchical' => true, если внука нет?

  2. Если "Фильм" - это таксономия верхнего уровня, то когда я регистрирую ребенка, это так же просто, как: 'parent_item' => __( 'Parent Movie' )?

  3. Как автоматически назначить дочернюю таксономию для публикации? До сих пор я выяснял, как прикрепить таксономию к сообщению, но хорошо ли это работает с таксономией детей? wp_set_object_terms($post_ID, $cat, 'category');

  4. Если я запрошу родительскую таксономию, будет ли дочерний элемент включен в результаты или нет?

  5. Если таксономии не перечислены в args из register_post_type, будут ли они по-прежнему работать?

Author: kaiser, 2011-10-19

2 answers

Слишком много для комментария, поэтому я оставлю это для ответа:

  1. Вы задаете много вопросов, которые на самом деле должны быть разными вопросами, а не сваливаться в один.
  2. (Объявление 1.) Вы не регистрируете таксономии "ребенок" или "родитель". Вы добавляете (дочерние) термины в иерархическую таксономию с помощью внутреннего пользовательского интерфейса WP. Вы можете сделать это программно с помощью wp_set_post_terms();, wp_set_object_terms();, или другие функции, но это более внутренний материал и с ним сложно справиться, так как вам нужно будет проверить по каждому запросу, если он уже существует или нет (добавляет запросы к БД), поэтому на самом деле это не рекомендуется, так как вы не можете сделать это при активации темы, пока WP не предложит там зацепку.
  3. (Объявление 4.) Вы можете запросить несколько таксономий одновременно, как показано в статье WP_Query в Кодексе. Это запрашивает таксономию и все назначенные должности. Вы также можете запросить термины, которые находятся внутри иерархической таксономии. Но "детских" таксономий не существует. Только "детские" термины. Вы можете добавить эти дочерние термины для ваших аргументов tax_query. Выполнение чего-то вроде if is child of может быть выполнено с помощью таких функций, как get_term_children();. Если вы ссылаетесь на архив терминов, вы можете изменить запрос (search WPSE), чтобы включить также дочерние термины.
  4. (Объявление 3.) Как указано в других ответах и комментариях к некоторым другим вашим вопросам, вам нужно будет подключить такие вещи, как save_post и подобные. Вы найдете достаточно ответов здесь, на WPSE, которые покажут вам, как это сделать. Ты уже близко.
  5. (Объявление 2.) Вы смешиваете ярлыки с реальными аргументами. Аргументы parent_item и parent_item_colon предназначены для настройки пользовательского текста и не могут регистрировать "дочерние" таксономии. Они используются только для изменения текста по умолчанию, который вы видите в пользовательском интерфейсе администратора.

Примечания:

  • Пожалуйста, позаботьтесь о своем старом Qs. У нас действительно возникли проблемы с уменьшением количества открытых и неотвеченных вопросов. Вам следует вернуться и попытаться поработать над вашими открытыми вопросами, в которых есть ответы.
  • Правильное форматирование высоко ценится. Отвечающие вкладывают свое время и советы бесплатно, чтобы помочь вы решаете свою проблему. Пожалуйста, приложите равное количество усилий, задавая и формулируя вопрос
  • Будьте вежливы в своих комментариях к ответу. Это а) побудит ответчика предложить дополнительную помощь и б) это открытый формат вопросов и ответов, и ваш вопрос призван помочь другим пользователям позже избежать повторения того же вопроса, а вместо этого просто прочитайте свой вопрос и соответствующие ответы. Смотрите на свое поведение, когда вы спрашиваете и комментируете, как на что-то вроде вашей "бизнес-карты".
 2
Author: kaiser, 2011-10-19 16:40:02

Если вы зарегистрируете таксономию как hierarchical=>true, она станет категорией, и вы сможете формировать отношения родитель- потомок в этой таксономии. В то время как если вы зарегистрируете таксономию как hierarchical=>false, она станет тегом, что означает отсутствие отношений между родителями и детьми. Возможно, вам потребуется получить идентификатор термина, использовать функцию term_exists, затем использовать wp_insert_term, чтобы вставить новый термин с родительским идентификатором, который вы получили с помощью term_exists.

 5
Author: Rutwick Gangurde, 2011-10-19 14:57:48