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

33

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

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

'hierarchical' = > faux

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

Et cela?

'hierarchical' = > vrai

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 qualifierai pas de meilleure si personne d'autre n'apporte 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, dites-nous ce que j’ai manqué.

    
posée MikeSchinkel 22.08.2010 - 08:37
la source

1 réponse

40

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'=>false , vous obtenez le type de métabox suivant, qui est le format de métabox que WordPress utilise également pour les balises de publication :

.

'hierarchical'=>true

Cependant,lorsquevousspécifiez'hierarchical'=>true,vousobtenezletypedemétaboxsuivant,quiestleformatdemétaboxutiliséparWordPrességalementpourCatégories:

.

Bien entendu, l'exemple ci-dessus indique é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. Malgré cela, "beaucoup de parents" n'est pas la façon dont les taxonomies hiérarchiques fonctionnent dans WordPress, mais IMO classer parfaitement n'importe quoi est presque impossible sans se soucier du fonctionnement de WordPress. Donc, Caveat Emptor!

Sur l'enregistrement d'une taxonomie personnalisée ou "Pourquoi ne faut-il pas l'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! ), c'est vous essayerez probablement d’ajouter register_taxonomy() comme le code que vous voyez dans la question directement dans le fichier functions.php de votre thème. Oups!

Si vous ajoutez le code directement dans functions.php , votre métabox s'affichera mais les termes que vous venez d'ajouter ne seront pas sauvegardés (et sous la forme 'heirarchical'=>true de la métabox, vos termes existants ne se chargeront pas avec des cases à cocher.) En effet, vous devez enregistrer des taxonomies personnalisées (et des types de publication personnalisés) dans un crochet init , 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 aide!

    
réponse donnée MikeSchinkel 22.08.2010 - 08:42
la source

Lire d'autres questions sur les étiquettes