La question est "Quelle est la différence entre les taxonomies hiérarchiques et non hiérarchiques?" Cette question m'a vraiment déconcerté au début, alors je me suis dit que ce serait une bonne idée de montrer la différence à ceux qui surfent sur le site à la recherche de la distinction.
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:
register_taxonomy('movie-genre', 'movie', array(
'hierarchical' => false,
'label' => 'Genre',
'query_var' => 'movie-genre',
'rewrite' => array('slug' => 'genres' ),
));
Et ça?
register_taxonomy('movie-genre', 'movie', array(
'hierarchical' => true,
'label' => 'Genre',
'query_var' => 'movie-genre',
'rewrite' => array('slug' => 'genres' ),
));
Notez que je vais aller de l'avant et répondre à ma propre question, mais je ne la marquerai pas comme meilleure si personne d'autre n'intervient avec une très bonne réponse aussi. 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é.
La réponse simple est que les termes des taxonomies hiérarchiques peuvent avoir termes enfants} _. Mais quoi d'autre?
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 Post Tags:
Toutefois, lorsque vous spécifiez 'hierarchical'=>true
, vous obtenez le type de métabox suivant, qui est le format de métabox que WordPress utilise également pour Categories:
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 comment taxonomies hiérarchiques fonctionne dans WordPress mais IMO classer parfaitement quoi que ce soit est presque impossible indépendammentde la façon dont fonctionne WordPress. Donc Caveat Emptor!
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 ajouter register_taxonomy()
comme le code que vous voyez dans la question directement dans le fichier functions.php
de votre thème.
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 seront pas chargés avec des cases à cocher.) C'est parce que vous devez vous enregistrer taxonomies (et types de publication personnalisés) à l'intérieur d'un crochet init
, comme ceci:
<?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!