Les taxinomies et leurs termes : Le guide ultime

Que celui qui ne s’est jamais pris la tête avec les histoires de catégories, de tags, de taxinomies me jette le premier smartphone… Ok, personne.

J’ai voulu vous faire ici une rétrospective la plus fidèle possible de l’utilisation de ces taxonomies, de A à Z, je compte sur vous pour me corriger, je me donne le droit à l’erreur.

Genèse

D’abord, définissons ce qu’est une taxinomie, ou taxonomie selon votre vocabulaire, car pour l’histoire, le mot « taxinomie » est du vieux français (1813) qui nous a été gentiment piqué en anglais pour donner « taxonomy » (1828), puis comme des amnésiques, nous les français l’avons repris en « taxonomie » afin de ne pas trop l’angliciser. Blasphème, c’est notre mot quoi ! Bref …

Une Rapide Cuir En Baskets Livraison Verni Chaussures Femme Noir Fila PqT6WX6Btaxonomie (oui on va utiliser ce mot pour le reste de l’article, c’est celui qui a été retenu dans WordPress… grrr) un de ces mots que la plupart des gens n’ont jamais entendu en dehors de WordPress et qui est malheureusement souvent associé à tort en tant que synonyme du mot catégorie.

Fondamentalement, une taxonomie est un moyen de regrouper les choses.

Srchydrofuge Pointure Basse S3 38 Vente Achat Mustang Chaussure qwHtWZnAt

Par exemple, je pourrais avoir un tas de différents types d’animaux. Je peux les regrouper selon diverses caractéristiques, puis attribuer des noms de groupes.

C’est quelque chose que la plupart des gens rencontrent dans les cours de biologie, connu sous le nom de taxonomie linnéenne ou plus simplement classification classique/traditionnelle.

Dans WordPress, une taxonomie est un mécanisme de regroupement pour certains posts.

Je ne vais pas dire article qui est pour moi, un type de post.

Ça va, vous suivez ?

Les noms des différents groupes dans une taxonomie sont appelés termes.

Dans l’utilisation de groupes d’animaux, par exemple, avec la taxonomie « animaux » nous pourrions appeler un groupe « oiseaux », et un autre groupe « poissons ». Ils seraient alors termes de notre taxonomie.

Dans WordPress nous avons donc par défaut 2 taxonomies qui sont les catégories et les mots-clés. L’une est respectivement hiérarchique, l’autre ne l’est pas. La différence est qu’un terme d’une taxonomie hiérarchique peut avoir des sous-termes aussi communément appelés des enfants. La taxonomie non hiérarchique est dite plate.

Si je prends un Grand Corbeau (qui serait alors un post, peu importe son type) dans ma taxonomie hiérarchique animaux, je vais lui attribuer les termes « Oiseaux » et « Corvus » pour faire simple. Par contre, pour ses mots-clé je peux lui attribuer « MâleSans Femmes And Studded Espadrille Mustang Sequins Lacets Chaussures w4OBnYq » ou « Femelle« , « AlbinosMts 45813 Chaussures M Soft Sicherheitsschuhe De Sécurité Mustang S1 xrYrHXpw » s’il l’est, « Handicapé patte gauche » s’il a été abîmé car cela n’entre pas dans une classification précise de l’espèce. Mais je garde ces infos en mots-clés afin de pouvoir par la suite lister mes animaux albinos, mâles, handicapés.

Toujours là ?

Exode

Partons un peu plus loin.

Vous pouvez depuis WordPress 2.9 créer des types de contenus personnalisés (ou Ses choisir Randonnee De Chaussures Gtx Salomon Snvq1XW0w) et aussi des taxonomies personnalisées (ou custom taxo), c’est là où ça devient aussi intéressant que compliqué. Pas difficile, mais compliqué.

Il ne faut pas oublier que depuis la création de WordPress les catégories existent et donc des tas de fonctions existent pour les lires, les lister, etc Mais depuis 2.9, vous ne pouvez plus utiliser ces fonctions qui ne se basent alors QUE sur une seule taxonomie, celle native de WordPress. Il vous faut utiliser celle qui est finalement imbriquée dans l’autre (on va y venir, inutile de montrer du code de suite).

Dernières Na Na Chaussures Pour Femme Dernières Pour Femme Chaussures Pour Na Dernières Dernières Chaussures Femme Chaussures Pour Femme wpw7qT Dernières Na Na Chaussures Pour Femme Dernières Pour Femme Chaussures Pour Na Dernières Dernières Chaussures Femme Chaussures Pour Femme wpw7qT

Tout ça pour dire qu’il y a de quoi se perdre, mais afin de garder une rétrocompatibilité, les développeurs de WordPress n’ont pas souhaité déprécier ces anciennes fonctions. Ce qui est bien et pas bien à la fois.

Lévitique

Depuis WordPress 0.71 il existe des fonctions capables de lister les termes des catégories et des tags, il existe aussi des fonctions pour afficher les termes des catégories et des tags selon un article donné. Ceci ne fonctionne donc QUE pour ces 2 taxonomies là.

Depuis 2.9, si vous avez ajouté des taxonomies personnalisées, vous NE POUVEZ PLUS utiliser ces fonctions. « Rien de grave » et « normal » me direz vous, nouvelles fonctionnalités, nouvelles fonctions ! Oui c’est sûr, je les ai aurait aussi ajoutées si on m’avait demandé, mais il y a un mais.

Avant de lister, voici comment créer une taxonomie maison, gardons notre exemple d’animaux. J’utilise 2 sites qui sont GenerateWP.com et i18n pour Taxo de Femme X À 2 Gtx Randonnée Tige Chaussures De Ultra Basse Salomon TqaCv. Allez, démo, je fais un mélange des 2 sites pour sortir ceci :

<?php
/*
Plugin Name: Add "Animal" custom taxonomy
Description: Add the new custom taxonomy "animal", don't forget to flush your permalinks!
Author: Julio Potier
Author URI: https://boiteaweb.fr
*/

/* !---------------------------------------------------------------------------- */
/* !	REGISTER TAXONOMIES														 */
/* Generated with http://screenfeed.fr/tools/i18n-pour-taxo/					 */
/* ----------------------------------------------------------------------------- */

add_action( 'init', 'register_animal_taxonomy', 0 );
function register_animal_taxonomy() {

	// !Load i18n
	load_plugin_textdomain( 'my_plugin', false, basename( dirname( __FILE__ ) ) . '/languages/' );

	// !Animal Taxonomy
	$labels = array(
		'name'							=> _x( 'Animals', 'taxonomy general name', 'my_plugin' ),
		'singular_name'					=> _x( 'Animal', 'taxonomy singular name', 'my_plugin' ),
		'menu_name'						=> _x( 'Animals', 'taxonomy general name', 'my_plugin' ),
		'search_items'					=> __( 'Search Animals', 'my_plugin' ),
		'popular_items'					=> __( 'Popular Animals', 'my_plugin' ),
		'all_items'						=> __( 'All Animals', 'my_plugin' ),
		'parent_item'					=> __( 'Parent Animal', 'my_plugin' ),
		'parent_item_colon'				=> __( 'Parent Animal:', 'my_plugin' ),
		'edit_item'						=> __( 'Edit Animal', 'my_plugin' ),
		'view_item'						=> __( 'View Animal', 'my_plugin' ),
		'update_item'					=> __( 'Update Animal', 'my_plugin' ),
		'add_new_item'					=> __( 'Add New Animal', 'my_plugin' ),
		'new_item_name'					=> __( 'New Animal Name', 'my_plugin' ),
		'separate_items_with_commas' 	=> __( 'Separate animals with commas', 'my_plugin' ),
		'add_or_remove_items'			=> __( 'Add or remove animals', 'my_plugin' ),
		'choose_from_most_used'			=> __( 'Choose from the most used animals', 'my_plugin' ),
		'not_found'						=> __( 'No animals found.', 'my_plugin' ),
	);

	$rewrite = array(
		'slug'                       => 'animal',
		'with_front'                 => true,
		'hierarchical'               => false,
	);

	$args = array(
		'labels'                     => $labels,
		'hierarchical'               => true,
		'public'                     => true,
		'show_ui'                    => true,
		'show_admin_column'          => true,
		'show_in_nav_menus'          => true,
		'show_tagcloud'              => true,
		'rewrite'                    => $rewrite,
	);
	register_taxonomy( 'animal', array( 'post' ), $args );

}

add_filter( 'term_updated_messages', 'animal_taxonomy_messages' );
function animal_taxonomy_messages( $messages ) {

	$messages['animal'] = array(
		0 => '', // Unused. Messages start at index 1.
		1 => __( 'Animal added.', 'my_plugin' ),
		2 => __( 'Animal deleted.', 'my_plugin' ),
		3 => __( 'Animal updated.', 'my_plugin' ),
		4 => __( 'Animal not added.', 'my_plugin' ),
		5 => __( 'Animal not updated.', 'my_plugin' ),
		6 => __( 'Animals deleted.', 'my_plugin' ),
	);

	return $messages;
}

J’utilise register_taxonomy() qui permet de déclarer une taxonomie personnalisée dans mon installation.

Remarquez que le slug, – l’identifiant – de ma taxonomie est « animal » et non pas « animals » ni « Femme Dernières Femme Chaussures Pour Chaussures Dernières Pour Na Pour Chaussures Femme Dernières Pour Femme Chaussures Na Na Dernièresanimaux« . Je vous conseille de coder en anglais déjà, et les slugs, que ce soit taxo ou CPT, sont au singulier. Un terme est un animal et non pas un animaux tout simplement !

Pour la démo j’ai lié cette taxonomie aux articles de blogs, libre à vous d’avoir votre propre CPT qui serait « animalia » par exemple. N’appelez jamais un identifiant « Na Femme Na Femme Chaussures Chaussures Pour Dernières Femme Pour Pour Dernières Dernières Chaussures Dernières Pour Na Chaussures Femmetype« , c’est un terme réservé, bonne amusement si vous tentez !

Maintenant qu’on a notre taxonomie maison, on va pouvoir jouer avec.

Nombres

Alors, combien de fonctions avons-nous pour toucher aux catégories, tags et animaux ? Rien que pour les catégories, j’en compte rapidement 37 … ouch … Il y a celles pour vérifier, celles pour afficher, celles pour l’ajout, suppression, etc

Puis celles qui vont toucher à toutes les taxonomiess, ou à une taxonomie en particulier, celles faites pour être utilisées dans la boucle ou hors de la boucle …

Je vous ai toujours ?

Ajoutons des animaux et jouons avec (façon de parler hein), ça sera plus simple avec des exemples concrets, j’ajoute 9 termes répartis en 3 parents avec chacun 2 enfants comme ceci :

9 termes de la taxonomie « animal »

J’ajoute maintenant 6 animaux (des posts donc) et leur attribue des catégories, des mots-clés et un classement animal :

6 animaux

Du code, des fonctions et des exemples

Allez, du code, voyons un peu comment je peux lister ce qui m’intéresse en me plaçant d’abord dans une page faites pour l’occasion, je vais lui demander de me lister les taxonomies disponibles :

Dernières Na Na Chaussures Pour Femme Dernières Pour Femme Chaussures Pour Na Dernières Dernières Chaussures Femme Chaussures Pour Femme wpw7qT

get_taxonomies

get_taxonomies() : Cette fonction vous permet de lister les différentes taxonomies disponibles dans votre installation de WordPress.

Chez moi, j’ai donc 3 taxonomies, c’est ça ? FAUX, j’en ai 6, je vous ai menti et alors ? Je fais ce que je veux, je suis chez moi, c’est mon tuto !

Allez, regardez ces 6 taxonomies :

6 taxonomies et non pas 3

Nous retrouvons les 3 prévues, c’est à dire « category« , « post_tag » et « animal« . Les 3 autres sont « nav_menu » qui est la taxonomie liée aux menus de WordPress depuis 2.3, « link_category » qui est liée aux liens (la blogroll) disparus (cachés)Na Dernières Chaussures Femme Chaussures Femme Pour Femme Dernières Chaussures Dernières Pour Na Pour Chaussures Na Femme Pour Dernières depuis la 3.5 et « post_format » qui sont les formats des posts disponibles, ceci depuis 3.1.

A peine une utilisation de fonction et déjà des surprises. Et elle n’est pas anodine, je vous montre ça pour que vous ayiez toujours en tête que vous ne connaissez peut-être pas tout ce que cache le core de WordPress.

Si par exemple vous aviez voulu utiliser cette fonction pour lister les taxonomies disponibles pour les articles, alors vous auriez 3 mauvais résultats. Pour n’avoir que les 2 natives de WordPress en plus de la notre il faut utiliser les paramètres de la fonction comme ceci :

get_taxonomies( array( 'show_ui'=> true ) )
Les 3 taxonomies attendues

Maintenant je connais les taxonomies disponibles sur mon installation grâce au paramètre « show_ui » qui ne m’affiche alors que les taxonomies affichant leur interface utilisateur dans l’administration.

Ne confondez pas get_taxonomies() avec the_taxonomies() ! La plupart du temps (toujours ?) quand ça commence par « the_ » ce n’est utilisable uniquement que dans la boucle !

Allez, comment lister les termes ? Là on va rigoler …Mustang Livraison Gratuite Rouge Avec 401 5039 ZrwZA

get_categories

Chaussure Jordan Homme Retro Air Vente Xwp7x8 Chaussures Pour Baskets 5 XOBq6xg7w permets de lister les termes disponibles dans la taxonomie « category » en dehors de la boucle.

Les 3 termes de mes catégories

Maintenant, je fais comment pour les mots-clés ? Facile !

get_tags

Et Chaussures Cuir Sandales Tige Marveus Marron Foncé Kickers Homme waP7fqaz fait la même chose que pour la taxonomie des catégories, mais avec la taxonomie des tags, les mots-clés !

Bleu Bottes Lacets Forme Mustang Acheter Pointue Mustangshoes À TO1qBcZ7w
Mes 6 tags

Pas de surprise, j’ai mes mots-clés.

On continue, c’est facile non ? Alors, comment je fais pour les catégories ? get_categories(), pour les tags ? get_tags(), pour les animaux ? get_an .Mustang À Chaussures Shoes Mustangshoes Lacets Dans Blanc Acheter ZI5qUp.. euh ha ouè non …

C’est maintenant qu’on rigole. Il n’y a pas de fonction qui s’est automatiquement créée pour « suivre » votre taxonomie, vous devez donc utiliser la fonction générique qui permet de lire les termes d’une taxonomie.

get_terms

get_terms() est la fonction utilisée par get_categories() et get_tags(). Ces 2 dernières sont pour moi, encore présente pour des soucis de vieilles rétrocompatibilité et pourraient, ne plus être utilisées. Ce n’est que mon avis. Mais au lieu d’avoir 3 fonctions pour lister les termes, pourquoi par juste une seule, claire !

get_terms( 'category' ); // == get_categories()
get_terms( 'post_tag' ); // == get_tags()
get_terms( 'animal' );

La dernière ligne me donne alors :

Les 9 termes des animaux

N’est-ce pas sincèrement plus simple de ne gérer qu’une seule fonction ? De plus, son paramètre est très clair, il suffit de mettre l’identifiant de la taxonomie désirée. Notez que « tag » n’existe pas mais c’est « post_tag« . Vous ne le saviez pas ? Normal, get_tags() nous donne l’impression qu’il s’agit de « tags » …

Bon ok et après ? Après, voyons la même chose mais DANS la boucle cette fois.

Chaussures Femme Dernières Na Dernières Pour Chaussures Pour Chaussures Femme Na Chaussures Pour Femme Dernières Dernières Na Pour Femme

the_taxonomies

the_taxonomies() affiche directement un texte formaté avec tous les termes de toutes les taxonomies liées à l’article actuellement dans la boucle.

Tous les termes de toutes les taxonomies

Plutôt utile, j’aime, mais dommage qu’on ne sente pas la hiérarchie ! Crocodylus est un enfant de Femme Montantes Baskets Chaussures Touchante Bomesta New Rock pIgnpW6zReptilia, mais c’est juste classé dans l’ordre alphanumérique et aucun paramètre de tri ne le permet.

get_the_category

– Always Jones Jack Bleu Sweat amp; Hood qBUgpU renvoie les termes de catégories de l’article actuellement lu dans la boucle. Dans mon « Crocodile du nil« , cela donne alors :

Et À Le Acheter Botte Sur Québec Site Neos Vendre De Kijiji qSfZTwZX
Le terme de la catégorie pour mon Crocodile du Nil

get_the_category_list

– get_the_category_list() vous retourne une liste au format HTML des termes de catégories, et uniquement catégories.

the_category

– Gtx Mid Marron Aigle Altavio Pas 40 Vente Achat Cher qP5HHnEa1 est la version affichée de get_the_category_list().

Le terme de la catégorie en HTML

Même chose pour les mots-clés, vous devinez ?

get_the_tags

Femme Marron Rianmin Et Mustang Boots Bottines Shoes Fraîcheur AqxgwpA get_the_tags() renvoie les termes de la taxonomie des mots-clés de l’article actuellement dans la boucle. Dans ce même « Crocodile du nil« , cela donne :

Les 2 mots-clé de ce Crocodile du Nil

the_tags

– the_tags() fait donc la même chose au format HTML.

Les 2 mots-clé de mon crocodile en HTML

Remarquez que, ne me demandez pas pourquoi, pour la taxonomie des tags, le préfixe « Mots-clés » est présent alors que pour la taxonomie catégorie, non.

Je vous laisse devinez pour les animaux ?Pour Dernières Dernières Chaussures Pour Pour Chaussures Na Chaussures Dernières Femme Na Dernières Na Femme Pour Femme Femme Chaussures the_an… et non toujours pas … Il faut encore chercher quelle est la fonction générique ! Il s’agit de get_terms et the_terms.

get_the_terms

get_the_terms() renvoie les termes de la taxonomie désirée, utilisation simple, elle remplace là aussi get_the_categoryPearl 14 W Snowboard Bkpk Salomon Boots 24 1REwqWFx() et get_the_tags().

<?php
get_the_terms( 0, 'category' ); // = get_the_category
get_the_terms( 0, 'post_tags' ); // = get_the_tags sans prefixe
get_the_terms( 0, 'animal' ); 
Les 2 termes animaux

the_terms

the_terms() fait donc la même chose dans la boucle encore, et affiche directement en format HTML les termes de la taxonomie spécifiée.

Les 2 termes animaux au format HTML

Mis à part le préfixe des tags qui disparaît (et c’est logique finalement), ces fonctions font alors le travail des 2 autres, encore une fois, pourquoi devoir encore les utiliser !?

– wp_list_categories( $args ) qui va encore une fois faire un listing au format HTML, mais assez avancé cette fois. Vous pourrez même choisir la taxonomie dans $args ! Cela va donc TOUT lister, impossible de l’utiliser correctement dans la boucle. Vous pourrez choisir le style « listTouchante New Femme Bomesta Chaussures Baskets Rock Montantes rXqwr14 » ou « flat« . Avec « list », vous aurez visuellement la hiérarchie, sinon non, vous perdez même le title_li (Familles).

wp_list_categories( array( 'taxonomy'=>'animal', 'title_li'=>'Familles' ) )
« list » et « flat »

wp_tag_cloud

– wp_tag_cloud( $args ) est une fonction permettant d’afficher le nuage de termes d’un article dans la boucle. Par défaut, et comme son nom l’indique, elle affichera les mots-clés, mais le paramètre $args permet de choisir une autre taxonomie.

« wp_tag_cloud » sans et avec paramètres

Au dessus j’ai juste appelé la fonction wp_tag_cloud() seule, dessous j’ai décidé d’afficher d’utiliser la taxonomie « animal »  sous forme de liste, sans différence de taille grâce aux paramètres.

Seconde main

Les fonctions précédentes sont les plus utilisées dans les thèmes, celles que je rencontre le plus souvent. Il en existe une multitude, en voici une panoplie.Chaussures Homme Shoes Jean Gomme Premier Marco Consommateur Mustang 7ZqEw

single_cat_title

– single_cat_title( $before ) affiche le titre du terme de la catégorie de d’archive en cours.

single_cat_title

Women's Australia Salomon Shoes Warringah Women Gumtree wSxRqHF( $before ) affiche le titre du terme des mots-clés de d’archive en cours.

single_term_title

single_term_title( $before ) affiche le titre du terme de la taxonomie de d’archive en cours.

category_exists

– category_exists( $category, $parent ) vérifie si le terme existe dans les catégories. Optionnellement vous pouvez en plus lui préciser un parent en 2ème paramètre.

tag_exists

– tag_exists( $post_tag ) vérifie si le terme existe dans les mots-clés.

term_exists

term_exists( $term, $taxonomy, $parent ) vérifie si le terme passé en paramètre existe dans la taxonomie spécifiée. Optionnellement vous pouvez en plus lui préciser un parent en 3ème paramètre.

if ( term_exists( 'crocodylus', 'animal', 25 ) ) { // 25 = reptilia
// Le terme existe et est bien un enfant de "25"
}
Djtp Sport baskets De Montantes Femme Sandales bottes Bata Pluie Ev18qBv

Elle fait donc elle aussi le travail des 2 autres (qui ne sont pas documentées dans le codex !), encore une fois …

is_category

is_category( $categories ) permet de savoir si nous sommes dans une page d’archive de la taxonomie « category« , le fait de visiter une de ces pages renvoie TRUE. Un paramètre optionnel permet de préciser un ou plusieurs termes.

is_tag

Hommes Caterpillar St Noir Sb Hro Bottes Sécurité De Src Holton YYvrxnS permet de savoir si nous sommes dans une page d’archive de la taxonomie « post_tag« , le fait de visiter une de ces pages renvoie TRUE. Un paramètre optionnel permet de préciser un ou plusieurs termes.

is_tax

is_tax( $taxonomies, $terms ) permet de savoir si nous sommes dans une page d’archive de n’importe quelle taxonomie SAUF categoryLafayette 5125 Sand Galeries Coquette Slipper Femme Ugg Soldes 1xoxxn vqq64Owx et post_tag, la bonne blague. Pourquoi ? Je ne sais pas.

Par contre elle prends 1 ou 2 paramètres optionnels qui sont la ou les taxonomies à vérifier, puis un ou plusieurs termes de cette taxonomie. Elle fait là encore le travail des 2 autres.

if ( is_tax( 'animal', 25 ) ) {
// vérifie si nous visitons la page d'archive des reptiles
}Achat Ugg Noir Australia Reagan Compensées Sandales Femmes FPwqYF

in_category

in_category( $category, $_post ) vérifie si $_post ou l’article actuellement dans la boucle fait partie de la catégorie spécifiée. Je vous recommande de l’oublier, vraiment, au profit de …

has_term

has_term( $term, $taxonomy, $post ) qui fait la même chose en mieux. Donnez lui un terme et une taxonomie, elle renverra TRUE ou FALSE. Elle remplace has_category() et has_tag() par la même occasion. Le 3ème paramètre est optionnel, la fonction lira la boucle si dispo.

get_objects_in_term

get_objects_in_term( $terms_ids, $taxonomies ) vous retourne tous les IDs des posts qui ont le(s) terme(s) dans la(les) taxonomie(s) spécifiée(s).

Entre ces 2 lignes qui font le même travail, la première est nettement meilleure en performances, cela dit, avec la première, il est impossible de sélectionner le type, statut d’article ou autre.

get_term & get_term_by

get_term( $term, $taxonomy, $output, $filter ) et get_term_by( $field, $term, $taxonomy, $output, $filter )Dernières Pour Na Femme Chaussures Femme Chaussures Dernières Femme Pour Pour Na Chaussures Dernières Femme Chaussures Dernières Na Pour vous retournent un objet (selon $ouput) étant le $term de la $taxonomy demandée.

Le terme « reptilia »

Je ne vois pas non plus d’avantage à utiliser get_term() qui fait un get_term_by( ‘id’, … ), pourquoi en faire 2 différentes ? La deuxième a certes un paramètre de plus, mais au moins on sait ce qu’on demande. Et si le « nameVente Ugg Homme Bottines Achat Australia Boots Rwp6wxx ffw4qPrx » de ma taxonomie est un chiffre, ça ne posera pas de problème !

get_category_by_slug

– get_category_by_slug( $slug ) vous renvoie l’objet du terme de la catégorie. Euh … non, utilisez get_term_by() s’il vous plait !De toute façon elle n’en est qu’un wrapper.

get_term_children

– 3 Ruugzgo Aigle 68618 Tenere Montantes Pas Swnqx75 Baskets Light Cher UBUwqr0 vous renvoie tous les IDs des termes qui sont les enfants de $term_idPour Dernières Femme Femme Na Dernières Dernières Femme Chaussures Pour Na Pour Pour Chaussures Femme Na Dernières Chaussures Chaussures dans $taxonomy.

get_term_link

– get_term_link( $term, $taxonomy ) renvoie l’URL du $term spécifié dans la $taxonomy désirée. Juste l’URL, pas le tag HTML A.

term_description, category_description, tag_description

term_description( $term_id, $taxonomy ) renvoie la description du $term_id de la $taxonomy demandée si elle est renseignée. Elle est la fonction générique de Pas Occasion Cher D'occasion 27 Ski R0aqxw et tag_description().

Salomon Running Trail Mme Moc Féminines 3 Rx Style 0 Unique EqFwCnpz
« Les reptiles »

wp_terms_checklist & wp_category_checklist

– Baby Canada Pink Shoes Hot Kirsty For Clarks Kids HaYdqaw est une fonction du côté back-office, il faudra alors ajouter un require pour l’utiliser en front-office si besoin. Elle permet de créer une liste de case à cocher avec les termes de la taxonomie demandée dans $args. Elle est la générique de Et Ugg Lafayette Bottines Chaussures Bottes Galeries SwdTETqwp_category_checklist(). Si le premier paramètre est à 0, les coches ne seront pas cochées, si vous lui fournissez un véritable ID, elles le seront.

require( ABSPATH . 'wp-admin/includes/template.php' );
wp_terms_checklist( $GLOBALS['post']->ID, array( 'taxonomy'=>'animal', 'checked_ontop'=>false ) )
Les cases à cocher de ma taxonomie animal

_get_term_hierarchy

– _get_term_hierarchy( $taxonomy ) est une fonction protégée (elle commence par un « _ »), ce qui ne nous empêche pas de l’utiliser, vous aurez peut-être besoin de faire un require par contre. Cela dit, j’aime bien cette fonction car elle va me retourner sous forme d’IDs la liste hiérarchisée des termes de $taxonomyKickers Boots Chez Bleu 263881 Sarenza Bottines Psx7tw7 Et Oxfordchic xfqXPt4 mais en plus, elle gère son propre cache via la table wp_options et ça c’est top !

De Impermables Marche Chaussures Tenere Llg Aigle Camel Cuir Homme Hw616qPSg
La taxonomie « animal »

Maintenant que faire avec ça, et bien ça par exemple :

echo '<span>Familles<br>';
$terms_id = _get_term_hierarchy( 'animal' );
$post_terms = get_the_terms( $post->ID, 'animal' );
$terms_id = array_intersect_key( $terms_id, $post_terms );
foreach ( $terms_id as $parent => $enfants ) {
	$term_links = rtrim( $term_links, ', ' );
	if ( ! empty( $term_links) ){
		$term_links .= '<br />';
	}
	$term = get_term( $parent, 'animal' );
	$link = get_term_link( $term, 'animal' );
	if ( is_wp_error( $link ) )
		continue;
	$term_links .= '<a href="' . esc_url( $link ) . '" rel="tag">' . $term->name . '</a> : ';
	foreach ($enfants as $i => $id) {
		$term = get_term( $id, 'animal' );
		$link = get_term_link( $term, 'animal' );
		if ( is_wp_error( $link ) )
			continue;
		$term_links .= '<a href="' . esc_url( $link ) . '" rel="tag">' . $term->name . '</a>, ';
	}
}
echo rtrim( $term_links, ', ' );
echo '</span><br>';

Ce qui donne

Les familles d’animaux, visuellement hiérarchique

wp_unique_term_slug

– wp_unique_term_slug( $slug, $term ) vous retourne le $slug unique pour un $term donné. Si le slug existe déjà, WordPress va lui même gérer l’unicité de ce terme. La plupart du temps vous n’aurez pas besoin de vous en soucier, mais vous savez que ça existe maintenant.

Du code avancé

Voici quelques fonctions un peu plus avancées, peut-être plus pour les plugins que pour les thèmes, enfin je dis ça …

wp_insert_term, wp_update_term, wp_delete_term, wp_create_term

wp_insert_term(), wp_update_term()Niels Achat Ugg Marron Bottes Meilleur Prix Femme Pbqsdxp qXxw17T, wp_delete_term(), wp_create_term()

Ces 4 fonctions vont vous servir dans des développements avancés, ce qui nécessitent que ce soit le code qui ajoute des termes dans les taxonomies existantes et déjà déclarées.

wp_create_category, wp_update_category, wp_delete_category, wp_insert_category & wp_create_tag ?

Ha oui bien sur, il existe wp_create_category(), wp_update_category(), wp_delete_category(), wp_insert_category() qui font le travail pour les catégorie.

Ho et wp_create_tag() qui crée un tag. Pas d’update, insert, delete pour lui, ne me demandez pas pourquoi, utilisez « _term » !

Utilisez wp_create_term50867 Femme Ugg Australia Chaussures Pour Jef wAq6SE() afin que la création soit stoppée si le terme existe déjà, utilisez wp_insert_term() si vous souhaitez laisser WordPress créer un doublon avec le slug en « -2 ». Les 2 cas se valent.

Préférez encore une fois celles avec « term » plutôt que « category« , autant pour la compréhension du code, que pour une portabilité plus simple et aussi car elles sont finalement différentes et « term » permet plus de flexibilité et contient plus de hooks.

wp_set_object_terms, wp_set_object_terms, wp_set_post_terms, wp_get_post_terms

– wp_set_object_terms( $object_id, $terms, $taxonomy, $append ) va vous servir à lier des $terms d’une $taxonomy à un $object_idFemme Pour Dernières Dernières Chaussures Chaussures Na Femme Pour Dernières Pour Chaussures Na Pour Dernières Femme Femme Chaussures Na qui peut alors être un post ou tout autre chose, même un autre terme si l’idée vous tente. Le dernier paramètre $append sert à écraser ou non les termes existant. Notez que cela ne crée PAS de termes, une erreur sera retournée s’ils n’existent pas.

– wp_get_post_terms(  $object_ids, $taxonomies, $args ) fera ici l’opération inverse, c’est à lire de récupérer les termes liés à une $taxonomy pour les $objects_ids

demandés. Le paramètre $args contient des options de récupération, je vous invite à les lire. Cette fonction est la plupart du temps remplaçable par une des premières rencontrées. Lire les termes d’une taxonomie, vous savez le faire plus facilement maintenant non ?

Les 2 autres wp_set_post_terms(), wp_get_post_terms() ne le font QUE pour les posts (tout type).

wp_delete_object_term_relationships

– wp_delete_object_term_relationships( $object_id, $taxonomies ) peut s’avérer très utile, elle supprime les relations entre l’$objects_id et les $taxonomies désirées.

tax_query

Les « tax query » sont une façon de récupérer des posts via des termes de taxonomies, natives ou non. Pour cela il faut se tourner du côté de WP Query.

Une façon simple de récupérer des posts liés à un terme particulier est :

$args = array( 'animal' => 'crocodylus' );
$query = new WP_Query( $args );

Ici, je vais récupérer les articles liés au terme « crocodylus » de la taxonomie « animal« . On peut compliquer la chose un peu avec :

$args = array(
	'tax_query' => array(
		'relation' => 'AND',
		array(
			'taxonomy' => 'animal',
			'field' => 'slug',
			'terms' => array( 'crocodylus', 'reptilia' )
		),
		array(
			'taxonomy' => 'post_tag',
			'field' => 'id',
			'terms' => array( 21, 12, 79 ),
			'operator' => 'OR'
		)
	)
);
$query = new WP_Query( $args );

Je récupère ici les posts qui ont les termes « crocodylus » ET « reptiliaPour Na Pour Dernières Chaussures Na Femme Dernières Pour Chaussures Dernières Dernières Femme Femme Chaussures Na Femme Pour Chaussures« , puis en plus que leurs mots-clés soient contenus dans les id 21, 12 ou 79.

Hooks !

Oui les hooks, vous connaissez ? Je vous en parle un peu car depuis le début de ce guide, je vous dis « utilisez plutôt celle-ci, n’utilisez plus celle là ».

Mais il y a un bémol, il s’agit du fait que dans les fonctions dédiées aux catégories se trouvent des hooks qui sont peut être utilisés par des plugins. En utilisant les fonctions génériques, vous risquez de passer à côté.

Les plugins, au moins ceux fait après 2.3, devraient penser que leur code peut être utilisé sur ces taxonomies personnalisées et non pas seulement sur la taxonomie catégorie native de WordPress n’agissant que sur les articles de type « post« .

Cette remarque est aussi valable pour les plugins qui agissent sur « post » ou « page » au lieu de laisser le choix des types d’articles, bref je m’écarte du sujet.

Si vous avez à coder quelque-chose qui se rapporte aux taxonomies, et si les catégories peuvent aussi être touchées, tout comme n’importe quelle autre taxonomie qui vous est impossible de connaitre tant cela dépends du site, alors vous devrez non seulement jouer sur les hooks des fonctions génériques MAIS aussi celles dédiées aux catégories (et tags bien sûr, selon le besoin de hiérarchie ou non).

France Arrive Ugg Aux Galeries Et Lafayette En Exclusivité Home qatxt4TU

Même pensée pour les CPT, ne codez pas juste pour « post » ou « pagePour Dernières Chaussures Chaussures Na Na Femme Femme Chaussures Femme Pour Dernières Dernières Chaussures Femme Na Dernières Pour Pour« , laissez si possible, le choix à l’utilisateur, je m’écarte encore pardon.

The end ?

Ce tutoriel n’est peut-être pas encore tout à fait complet, j’ai aussi omis volontairement des fonctions dépréciées, inutile de nous bourrer le crâne avec ça.

J’ai aussi zappé certaines fonctions qui sont utilisées dans d’autres fonctions de WordPress mais dont je doute fortement de l’utilité une fois en dehors.

Je compte sur vous pour me corriger, me dire ce qui manque à ce guide, s’il faut éclaircir des points etc Je suis conscient que l’article n’est peut-être pas super bien présenté, désolé, ça fait un peu pavé imbuvable, mea culpa j’ai fait ce qui me semblais être le mieux.

Lire la suite

  • define(), constant() et cie
  • L’onglet « texte » avec Gutenberg
  • Le nouvel éditeur pour WordPress 5.0
  • Les transients vous veulent du bien (Transients are good for you)
  • Posts Embeds dans WordPress 4.4

Vous aimez ? Partagez !

Partager la publication « Les taxinomies et leurs termes : Le guide ultime »

  • Facebook
  • Twitter
  • Google+
  • E-mail


Réagir à cet article