La différence entre les taxonomies hiérarchiques et non hiérarchiques?

34

La question est "Quelle est la différence entre les taxonomies hiérarchiques et non hiérarchiques?" Cette question m'a vraiment surpris au début, alors j'ai pensé que ce serait une bonne idée de montrer la différence aux autres internautes cherchant la distinction surfer sur le site.

Plus précisément, la question fait référence à l' hierarchicalargument transmis à la register_taxonomy()fonction. Plus précisément, quelle est la différence entre ceci:

'hierarchical' => false

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

Et ça?

'hierarchical' => true

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

Remarque: je vais répondre à ma propre question, mais je ne la marquerai pas comme meilleure si personne d'autre n'offre une très bonne réponse également. De plus, mon instinct me dit que je n’aurais peut-être pas réussi à saisir toutes les distinctions entre les deux dichotomies. Sinon, laissez-nous savoir ce que j’ai manqué.

Mike Schinkel
la source
Pouvez-vous également expliquer ce qui est hiérarchique à quoi? Le groupe de taxonomie est-il hiérarchique au type de publication? Ou bien la taxonomie individuelle est-elle hiérarchique par rapport au groupe de taxonomie? Je suis juste dérouté par le mot hiérarchique, je suppose. Merci.
Dave

Réponses:

42

La réponse simple est que les termes des taxonomies hiérarchiques peuvent avoir des termes enfants . Mais quoi d'autre?

'hierarchical' => false

Lorsque vous spécifiez un, 'hierarchical'=>falsevous obtenez le type de métabox suivant, qui est le format de métabox que WordPress utilise également pour les balises de publication :

Metabox de terme de taxonomie dans l'écran de modification après publication lorsque $ hierarchical == false

'hierarchical' => true

Toutefois, lorsque vous spécifiez, 'hierarchical'=>truevous obtenez le type de métabox suivant, qui est le format de métabox que WordPress utilise également pour les catégories :

Méta-tax de terme de taxonomie dans l'écran de modification après publication lorsque $ hierarchical == true

Bien entendu, l'exemple ci-dessus montre également que la catégorisation hiérarchique peut être un peu un mélange, car dans la vie réelle, les sous-catégories s'appliquent souvent à de nombreuses catégories parentes. Même si «beaucoup de parents» n’est pas la façon dont les taxonomies hiérarchiques fonctionnent dans WordPress, IMO classer parfaitement quoi que ce soit est presque impossible, quel que soit le fonctionnement de WordPress. Alors Caveat Emptor!

Enregistrement sur taxonomie personnalisée ou "Pourquoi ne pas enregistrer?"

Bien que cela ne soit pas directement lié à la question de savoir si vous êtes un débutant en train d'essayer des taxonomies personnalisées ( ou un développeur expérimenté qui ne prête pas attention à ce qui m'est arrivé quand j'ai écrit ça! ), Il est probable que vous essayiez d'ajouter register_taxonomy()du code vous voyez dans la question directement dans le functions.phpfichier de votre thème . Oops!

Si vous ajoutez le code directement dans functions.phpvotre métabox, les termes que vous venez d'ajouter ne seront pas sauvegardés (et sous la 'heirarchical'=>trueforme du métabox, vos termes existants ne seront pas chargés avec des cases à cocher.) C'est parce que vous devez enregistrer des taxonomies personnalisées ( et types de publication personnalisés) dans un initcrochet, comme suit:

<?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' ),
    ));
}

J'espère que cela t'aides!

Mike Schinkel
la source
Une taxonomie hiérarchique est-elle la même chose qu'une catégorie personnalisée? Et une taxonomie non hiérarchique est-elle la même chose qu'une balise personnalisée?
Daniel
1
@ ravensfan55222 - Pas exactement, mais presque. Au lieu d'une «taxonomie hiérarchique» identique à une catégorie personnalisée, le système de classification par catégorie intégré n'est qu'une des nombreuses taxonomies hiérarchiques potentielles. De même, les balises (post) ne sont qu'un exemple d'une taxonomie non hiérarchique. Plus correctement, "hiérarchique" n'est qu'un attribut d'une taxonomie, comme si une étiquette était un attribut juste d'une taxonomie ou une couleur un attribut d'une voiture. C’est peut-être ce que vous vouliez dire, mais j’ai voulu préciser, sinon.
MikeSchinkel