Разница между иерархической и неиерархической таксономией?

Вопрос: «В чем разница между иерархической и неиерархической таксономией?» Этот вопрос действительно сильно меня озадачил, поэтому я подумал, что это будет хорошая идея чтобы показать разницу с другими, просматривая сайт, ища различие.

В частности, вопрос относится к аргументу hierarchical, переданному функции register_taxonomy(). В частности, какая разница между этим:

'hierarchical' => ложь

register_taxonomy('movie-genre', 'movie', array(
  'hierarchical'    => false,
  'label'           => 'Genre',
  'query_var'       => 'movie-genre',
  'rewrite'         => array('slug' => 'genres' ),
));

И это?

'hierarchical' => правда

register_taxonomy('movie-genre', 'movie', array(
  'hierarchical'    => true,
  'label'           => 'Genre',
  'query_var'       => 'movie-genre',
  'rewrite'         => array('slug' => 'genres' ),
));

Примечание. Я собираюсь идти дальше и отвечать на свой вопрос, но не буду отмечать его как можно лучше, если никто другой не справится с действительно хорошим ответом. Также мое чувство кишки говорит мне, что я, возможно, не поймаю каждое различие между двумя дихотомиями, поэтому, если не сообщите нам, что я пропустил.

32 голоса | спросил MikeSchinkel 22 AM000000100000005631 2010, 10:37:56

1 ответ


39

простой ответ заключается в том, что термины в иерархических таксономах могут иметь дочерние термины . Но что еще?

'иерархического' = > ложные

Когда вы указываете 'hierarchical'=>false, вы получаете следующий тип метабокса, который представляет собой формат метаболизма. WordPress также использует для Теги сообщения :

Таксономический термин Metabox на экране редактирования сообщений, когда $ hierarchical == false

'иерархического' = > истинные

Однако, когда вы указываете 'hierarchical'=>true, вы получаете следующий тип метабокса, который представляет собой формат метаболизма. WordPress также использует для Категории :

Таксономический термин Metabox на экране редактирования сообщений, когда $ hierarchical == true

Конечно, пример выше также указывает, где иерархическая классификация может быть немного смешанной сумкой, потому что в реальной жизни подкатегории часто применяются ко многим родительским категориям. Даже тем, что «многие родители» не так, как иерархические таксономии работают в WordPress, но IMO, категоризирующая что-либо совершенно, почти невозможно независимо от того, как работает WordPress. Итак, Caveat Emptor!

О регистрации пользовательской таксономии или «Почему он не сохраняет?»

Не имея прямого отношения к вопросу, если вы новичок, который пытается опробовать пользовательские таксономии, ( или опытный разработчик, который не обращает внимания, как это случилось со мной, когда я написал это! ), это вероятно, вы попробуете добавить register_taxonomy(), как код, который вы видите в вопросе, непосредственно в файл functions.php вашей темы. К сожалению,

Если вы добавите код непосредственно в functions.php, ваш метабокс будет отображаться, но он не сохранит ваши недавно добавленные термины (и в 'heirarchical'=>true в метабоке ваши существующие условия не будут загружаться с помощью флажков.) Это потому, что вам нужно зарегистрировать пользовательские таксономии (и пользовательские типы сообщений) внутри init, например:

<?php
add_action('init','register_movie_genre_taxonomy');
  function register_movie_genre_taxonomy() {
    register_taxonomy('movie-genre', 'movie', array(
      'hierarchical'    => true,
      'label'           => 'Movie Genre',
      'query_var'       => 'movie-genre',
      'rewrite'         => array('slug' => 'genres' ),
    ));
}

Надеюсь, это поможет!

ответил MikeSchinkel 22 AM000000100000000331 2010, 10:42:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132