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

<p>вопрос<strong><em> "в чем разница между иерархической и неиерархической таксономией?" </em></strong>сначала этот вопрос действительно озадачил меня, поэтому я подумал, что было бы неплохо показать разницу тем, кто просматривает сайт в поисках различия.</p><p>в частности, вопрос относится к аргументу <code>hierarchical</code>, переданному в функцию <code>register\_taxonomy()</code>. более конкретно, в чем разница между этим:</p><h2>'иерархический' => ложный</h2><pre><code>register\_taxonomy('movie-genre', 'movie', array( 'hierarchical' => false, 'label' => 'genre', 'query\_var' => 'movie-genre', 'rewrite' => array('slug' => 'genres' ), )); </code></pre><p>и это?</p><h2>'иерархический' => правда</h2><pre><code>register\_taxonomy('movie-genre', 'movie', array( 'hierarchical' => true, 'label' => 'genre', 'query\_var' => 'movie-genre', 'rewrite' => array('slug' => 'genres' ), )); </code></pre><p>заметьте, я собираюсь ответить и на свой вопрос, но не буду отмечать его как лучший, если никто не придет с действительно хорошим ответом. кроме того, мое внутреннее чувство говорит мне, что я, возможно, не уловил все различия между этими двумя дихотомиями, поэтому, если нет, сообщите нам, что я пропустил.</p>

<p><strong> простой ответ </strong>заключается в том, что <em>термины в иерархических таксономиях могут иметь<strong> дочерние термины </strong></em>. а что еще?</p><h2>"иерархического" => ложным</h2><p>при указании <code>'hierarchical'=>false</code> вы получаете следующий тип метабокса, который является форматом метабокса, который wordpress также использует для <em>опубликовать теги</em>:</p><p><img src="https://mikeschinkel.com/websnaps/skitched-20100822-020749.png" alt="taxonomy term metabox in the post edit screen when $hierarchical==false">"иерархического" => вернооднако при указании 'hierarchical'=>true вы получаете следующий тип метабокса - формат метабокса, который wordpress также использует для categories:<img src="https://mikeschinkel.com/websnaps/skitched-20100822-022011.png" alt="taxonomy term metabox in the post edit screen when $hierarchical==true"></p><p>конечно, приведенный выше пример также указывает, где иерархическая категоризация может быть немного смешанной, потому что в реальной жизни подкатегории часто применяются ко многим родительским категориям. даже при том, что упускать <em>"много родителей"</em> не то, как иерархические таксономии работают в wordpress, но imo категоризировать что-либо совершенно практически невозможно <em>независимо</em> того, как работает wordpress. так <em>будьте бдительны!</em></p><h2>о регистрации пользовательской таксономии, или <em>"почему не сохранить?"</em></h2><p>хотя это не имеет прямого отношения к вопросу о том, являетесь ли вы новичком, пробующим пользовательские таксономии, (<em>или опытный разработчик, который не обращает внимания, как это случилось со мной, когда я писал это!</em>), вероятно, вы ' попробуем добавить <code>register\_taxonomy()</code>, подобный коду, который вы видите в вопросе, прямо в файл <code>functions.php</code> вашей темы. к сожалению!</p><p>если вы добавите код непосредственно в <code>functions.php</code>, ваш метабокс будет отображаться, но он не сохранит вновь добавленные вами термины (и в форме <code>'heirarchical'=>true</code> метабокса ваши существующие термины не будут загружаться с флажками.) это потому, что вам нужно зарегистрировать пользовательский таксономии (и пользовательские типы записей) внутри хука <code>init</code>, например:</p><pre><code><?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' ), )); } </code></pre><p>надеюсь это поможет!</p>