Ce didacticiel supposera que toutes les archives de catégories, de balises et de taxonomie sont affichées avec votre unique archive.php fichier, par opposition à des fichiers séparés pour category.php, tag.php, etc.
La plupart du temps, au sommet du archive.php fichier, les développeurs de thèmes placeront quelque chose comme ceci:
<h2><?php echo single_cat_title(); ?></h2>
<div class="category-description"><?php echo category_description(); ?></div>
Ou ca:
<h2><?php echo single_tag_title(); ?></h2>
<div class="tag-description"><?php echo tag_description(); ?></div>
Ou une combinaison:
<?php if( is_category() ) { ?>
<h2><?php echo single_cat_title(); ?></h2>
<div class="category-description"><?php echo category_description(); ?></div>
<?php } elseif( is_tag() ) { ?>
<h2><?php echo single_tag_title(); ?></h2>
<div class="tag-description"><?php echo tag_description(); ?></div>
<?php } ?>
Ce sont toutes des fonctions parfaitement adaptées à utiliser, sauf qu’elles ne fonctionnent pas avec des taxonomies personnalisées et entraîneront en fait une erreur (si vous n’utilisez pas une condition is_category / is_tag).
Si nous regardons le code source de tag_description () fonction, nous verrons qu’il ne s’agit en fait que d’une référence à la term_description () fonction, mais avec le paramètre «post-tag» défini par défaut.
/**
* Retrieve tag description.
*
* @since 2.8
*
* @param int $tag Optional. Tag ID. Will use global tag ID by default.
* @return string Tag description, available.
*/
function tag_description( $tag = 0 ) {
return term_description( $tag );
}
La fonction term_description () est vraiment sympa car (si on regarde la la source), nous voyons qu’il détectera réellement le type de taxonomie actuel qui est affiché et affichera la description du terme à partir de la taxonomie appropriée, au lieu de renvoyer l’erreur comme le fait tag_description (). Voir la fonction ci-dessous:
/**
* Retrieve term description.
*
* @since 2.8
*
* @param int $term Optional. Term ID. Will use global term ID by default.
* @param string $taxonomy Optional taxonomy name. Defaults to 'post_tag'.
* @return string Term description, available.
*/
function term_description( $term = 0, $taxonomy = 'post_tag' ) {
if ( !$term && ( is_tax() || is_tag() || is_category() ) ) {
$term = get_queried_object();
$taxonomy = $term->taxonomy;
$term = $term->term_id;
}
$description = get_term_field( 'description', $term, $taxonomy );
return is_wp_error( $description ) ? '' : $description;
}
Il existe également une fonction intéressante pour le titre du terme de taxonomie qui fonctionne de la même manière: single_term_title ()
Tout cela signifie que nous pouvons simplement utiliser ce qui suit dans notre archive.php et cela fonctionnera pour tout taxonomies:
<h2><?php echo single_term_title(); ?></h2>
<div class="tax-description"><?php echo term_description(); ?></div>
C’est bien mieux que de créer plusieurs fichiers pour gérer les différentes taxonomies (sauf si vous créez des mises en page personnalisées pour chacun) et c’est également beaucoup plus sûr.