Par défaut, il n'existe que deux types de contenus : les pages et les articles.
Un type de contenu peut être hiérarchique (pages) ou non (articles).
Un type de contenu peut être associé à une ou plusieurs taxonomie(s).
Par défaut il n'en existe que deux : les catégories et les étiquettes (ou tags).
Les valeurs d'une taxonomie sont appellées des termes.
Créer un type de contenu
Il y a deux manières de créer un type de contenu :
Les options disponibles pour le tableau de paramètres sont très similaires à celles de register_post_type.
functions.php
La fonction ci-dessus va créer une taxonomie "Genre" pour le type de contenu "Film"
Pour que la taxonomie apparaisse dans l'éditeur des contenus auxquelles elle est associée, il est nécessaire de renseigner le paramètre show_in_rest avec la valeur true.
Les templates
Le template à créer pour un type de contenu personnalisé est single-$posttype.php, en remplaçant $posttype par le nom de votre type de contenu. Pour un film, le template s'appellera alors single-film.php.
Sous réserve que votre type de contenu dispose d'une page d'archive (avec l'option has_archive paramétrée à true), vous pourrez également créer le template archive-film.php.
Vos taxonomies personnalisées disposent elles aussi de leurs propres templates : taxonomy-$taxonomy.php pour la page d'archive des contenus associés à la taxonomie $taxonomy et taxonomy-$taxonomy-$term.php pour les contenus associés au terme $term de la taxonomie $taxonomy.
Le template de la taxonomie "Genre" créée précédemment sera alors taxonomy-genre.php.
Afficher tous les termes d'une taxonomie
La fonction get_terms() permet de récupérer tous les termes d'une taxonomie. Elle prend en paramètre un array (voir les options possibles dans le Codex). L'option la plus importante est l'option taxonomy qui permet de définir la taxonomie pour laquelle vous souhaitez récupérer les termes.
Par défaut, les termes n'ayant aucun contenu lié ne seront pas retournés. Pour les afficher, vous devrez indiquer la valeur false pour l'option hide_empty.
Affichage de tous les genres sous forme de tags cliquables dans la page d'archive des films
Notez l'utilisation ici de la fonction get_term_link() pour récupérer l'URL de la page d'un terme.
Afficher les termes liés à un contenu
Pour afficher uniquement les termes d'une taxonomie qui sont liés à un contenu, la fonction à utiliser est get_the_terms(). Celle-ci prend deux paramètres :
L'objet WP_Post ou bien son identifiant
La taxonomie pour laquelle vous souhaitez récupérer les termes
Dans un template Wordpress, l'objet WP_Post est automatiquement défini à chaque itération de la boucle dans une variable globale $post. Il suffira alors d'indiquer cette variable $post comme premier paramètre de get_the_terms() pour récupérer les termes du contenu.
single-film.php
Affichage de tous les genres associés à un film dans sa page