get_term_parents_list( int $term_id, string $taxonomy, string|array $args = array() )
Retourne les parents d'un terme avec séparateur.
Paramètres
$term_id(int)requisId du terme.
$taxonomy(string)requisNom de la taxonomie.
$args(string|array)optionnelChaîne ou tableau d'arguments optionnels :
'format'
(string) Afficher les noms ou les slugs des termes parents. Accepte 'name' ou 'slug'.
Par défaut : 'name''separator'
(string) Format du séparateur entre les termes.
Par défaut : '/''link'
(bool) Retourner les termes parents sous forme de liens.
Par défaut : true'inclusive'
(bool) Inclure le terme dont on veut les parents.
Par défaut : true
Valeur par défaut : array()
Retourne
(string|WP_Error) Une liste de termes parents, l'objet WP_Error ou une chaîne vide si échec.
Déclaration et structure de la fonction get_term_parents_list()
get_term_parents_list() est déclarée dans le fichier wp-includes/category-template.php à la ligne 1398 :
function get_term_parents_list( $term_id, $taxonomy, $args = array() ) {
$list = '';
$term = get_term( $term_id, $taxonomy );
if ( is_wp_error( $term ) ) {
return $term;
}
if ( ! $term ) {
return $list;
}
$term_id = $term->term_id;
$defaults = array(
'format' => 'name',
'separator' => '/',
'link' => true,
'inclusive' => true,
);
$args = wp_parse_args( $args, $defaults );
foreach ( array( 'link', 'inclusive' ) as $bool ) {
$args[ $bool ] = wp_validate_boolean( $args[ $bool ] );
}
$parents = get_ancestors( $term_id, $taxonomy, 'taxonomy' );
if ( $args['inclusive'] ) {
array_unshift( $parents, $term_id );
}
foreach ( array_reverse( $parents ) as $term_id ) {
$parent = get_term( $term_id, $taxonomy );
$name = ( 'slug' === $args['format'] ) ? $parent->slug : $parent->name;
if ( $args['link'] ) {
$list .= '<a href="' . esc_url( get_term_link( $parent->term_id, $taxonomy ) ) . '">' . $name . '</a>' . $args['separator'];
} else {
$list .= $name . $args['separator'];
}
}
return $list;
}
Fonctions utilisées par get_term_parents_list()
wp_validate_boolean()Filtre / valide une variable comme booléen.
esc_url()Vérifie et nettoie une URL.
wp_parse_args()Fusionne des arguments définis par l'utilisateur dans un tableau par défaut.
get_ancestors()Retourne un tableau d'ids de parents pour un objet donné.
get_term_link()Génère un permalien pour l'archive d'un terme.
get_term()Retourne toutes les données d'un terme en donnant son ID.
is_wp_error()Vérifie si la variable est une erreur WordPress.
Où est utilisée la fonction get_term_parents_list()
dans le CMS WordPress
Exemples
if ( is_category() ) {
// Obtenir l'id du terme.
$query_obj = get_queried_object();
$term_id = $query_obj->term_id;
echo get_term_parents_list( $term_id, 'category' );
}
// Affichera :
Catégorie parent/Catégorie enfant/Catégorie petit-enfant
if ( ( is_tax() || is_category() || is_tag() ) ) {
$trail = '';
$home = '/<a href="' . get_home_url() . '">Home</a>';
$query_obj = get_queried_object();
$term_id = $query_obj->term_id;
$taxonomy = get_taxonomy( $query_obj->taxonomy );
if ( $term_id && $taxonomy ) {
// Ajout du nom de la taxonomie.
$trail .= '/' . $taxonomy->labels->menu_name;
// Ajout des parents du terme.
$trail .= '/' . get_term_parents_list( $term_id, $taxonomy->name, array( 'inclusive' => false ) );
}
// Affichage et ajout du terme actuel à la fin.
echo '<p class="breadcrumb-trail">' . $home . $trail . $query_obj->name . '</p>';
}
Sources
Codex WordPress : get_term_parents_list()
Autres fonctions dans le même fichier : wp-includes/category-template.php