Paramètres

$term_id

(int) (Requis) Id du terme.

$taxonomy

(string) (Requis) Nom de la taxonomie.

$args

(string | array) (Optionnel) Chaî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.

Structure de la fonction get_term_parents_list()

Définie dans le fichier wp-includes/category-template.php à la ligne 1370 :

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ù trouver la fonction get_term_parents_list() dans le CMS Wordpress

Exemples

Afficher les parents d'un terme sur une page d'archive de catégorie :
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
Exemple de breadcrumb pour une page de taxonomie :
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

Retour