Custom Taxonomies

Avant d’aller plus loin voici un petit rappel de ce qu’est une taxonomie dans WordPress.

Les taxonomies

Dans WordPress, les taxonomies permettent d’organiser et de trier les articles. Il existe par default deux types de taxonomies, les catégories (category) et les étiquettes (tag). Les différentes catégories et les différentes étiquettes que l’on va créer sont appelés des termes.

Les catégories

Les catégories sont hiérarchiques, c’est à dire qu’il peut y avoir des catégories parents et des catégories enfants. On les utilise souvent pour organiser nos articles et les retrouver plus facilement via un menu ou une liste par exemple.

Les étiquettes

Les étiquettes ne sont pas hiérarchique, on les utilise généralement à la manière de hashtags pour mettre des mot clefs en avant et trouver rapidement d’autres contenus sur la même thématique. on peut également les afficher sous la forme d’un nuage d’étiquette.

Custom Taxonomies

Tout comme les Custom Post Types, il également possible de créer des Custom Taxonomies. Si vous utilisez des Custom Post Type, il y a des grandes chances que vous souhaitiez organiser vos CPT à l’aide de taxonomies. Pour cela le meilleur moyen est de créer des Custom Taxonomies.

De la meme manière que pour créer des CPT, il existe deux façons de créer des CT :

Dans le fichier fonctions.php de votre thème

function wporg_register_taxonomy_genre() {
	 $labels = array(
		 'name'              => _x( 'Genres', 'taxonomy general name' ),
		 'singular_name'     => _x( 'Genre', 'taxonomy singular name' ),
		 'search_items'      => __( 'Chercher un genre' ),
		 'all_items'         => __( 'Tous les genres' ),
		 'edit_item'         => __( 'Modifier le genre' ),
		 'update_item'       => __( 'Mettre à jour le genre' ),
		 'add_new_item'      => __( 'Ajouter un nouveau genre' ),
		 'new_item_name'     => __( 'Nouveau genre' ),
		 'menu_name'         => __( 'Genres' ),
	 );
	 $args   = array(
		 'hierarchical'      => false,
		 'labels'            => $labels,
		 'show_ui'           => true,
		 'show_admin_column' => true,
		 'query_var'         => true,
		 'rewrite'           => [ 'slug' => 'genre' ],
	 );
	 register_taxonomy( 'genre', [ 'film' ], $args );
}
add_action( 'init', 'wporg_register_taxonomy_genre' );

On peut également s’aider d’un générateur de code comme wp-hasty.com

https://www.wp-hasty.com/tools/wordpress-taxonomy-generator/

Ou en utilisant un plugin comme Custom Post Type UI

https://fr.wordpress.org/plugins/custom-post-type-ui/

Comment afficher nos CT sur notre site ?

Voici un exemple de boucle WordPress utilisant les articles et les Default Taxonomies :

<?php
if ( have_posts() ) : while ( have_posts() ) : the_post();
	the_title(); 
	the_category();
	the_tags();
endwhile; endif;
?>

Et voici un exemple de boucle utilisant un Custom Post Type et une Custom Taxonomy :

<?php
$args = array(
  'post_type' => array('film'),
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();
	the_title();
	the_terms( $post->ID, 'genre');
endwhile; endif;
wp_reset_postdata();
?>

Voici un lien vers l’article de référence sur les Custom Taxonomies :
https://developer.wordpress.org/plugins/taxonomies/working-with-custom-taxonomies/

Et pour finir voici un lien vers l’ensemble des fonctions WordPress que l’on pourra utiliser dans notre theme.
https://codex.wordpress.org/Function_Reference