Вопрос «В чем разница между иерархической и неиерархической таксономией?» Этот вопрос поначалу действительно озадачил меня, поэтому я подумал, что было бы неплохо показать разницу тем, кто просматривает сайт в поисках различия.
В частности, вопрос касается hierarchical
аргумента, переданного register_taxonomy()
функции. Более конкретно, в чем разница между этим:
'иерархический' => ложный
register_taxonomy('movie-genre', 'movie', array(
'hierarchical' => false,
'label' => 'Genre',
'query_var' => 'movie-genre',
'rewrite' => array('slug' => 'genres' ),
));
И это?
'иерархический' => правда
register_taxonomy('movie-genre', 'movie', array(
'hierarchical' => true,
'label' => 'Genre',
'query_var' => 'movie-genre',
'rewrite' => array('slug' => 'genres' ),
));
Заметьте, я собираюсь ответить и на свой вопрос, но не буду отмечать его как лучший, если никто не придет с действительно хорошим ответом. Кроме того, мое внутреннее чувство говорит мне, что я, возможно, не уловил все различия между двумя дихотомиями, поэтому, если нет, пожалуйста, сообщите нам, что я пропустил.
taxonomy
tags
hierarchical
MikeSchinkel
источник
источник
Ответы:
Простой ответ в том , что условия в иерархических таксономии может иметь дочерние термины . А что еще?
«Иерархического» => ложным
Когда вы указываете,
'hierarchical'=>false
вы получаете следующий тип метабокса, который является форматом метабокса, который WordPress также использует для тегов поста :«Иерархического» => верно
Однако при указании
'hierarchical'=>true
вы получаете следующий тип метабокса, который является форматом метабокса, который WordPress также использует для категорий :Конечно, приведенный выше пример также указывает, где иерархическая категоризация может быть немного смешанной, потому что в реальной жизни подкатегории часто применяются ко многим родительским категориям. Несмотря на то, что «многие родители» не принимают во внимание то, как иерархическая таксономия работает в WordPress, IMO категоризировать что-либо совершенно невозможно практически независимо от того, как работает WordPress. Так что будьте бдительны!
О регистрации пользовательской таксономии или «Почему ее не сохранить?»
Хотя это не имеет прямого отношения к вопросу о том, являетесь ли вы новичком, пробующим пользовательские таксономии ( или опытный разработчик, который не обращает внимания на то, что случилось со мной, когда я писал это! ), Вероятно, вы попытаетесь добавить
register_taxonomy()
подобный код вы видите в вопросе прямо вfunctions.php
файл вашей темы . К сожалению!Если вы добавите код непосредственно в
functions.php
метабокс, отобразится, но он не сохранит вновь добавленные вами термины (а в'heirarchical'=>true
виде метабокса ваши существующие термины не будут загружены флажками). Это потому, что вам нужно зарегистрировать пользовательские таксономии ( и пользовательские типы сообщений) внутриinit
крючка, вот так:Надеюсь это поможет!
источник