_get_term_children( int $term_id, array $terms, string $taxonomy, array $ancestors = array() )
Retourne l'ensemble des termes qui sont les descendants d'un id de terme donnée.
Note : L'accès à cette fonction est marqué comme privé. Cela signifie qu'elle n'est pas destinée à être utilisée par les développeurs de plugins ou de thèmes, mais uniquement dans d'autres fonctions principales. Elle est répertoriée ici par souci d'exhaustivité.
Paramètres
$term_id(int)requisId du terme parent. Tous les termes retournés doivent être des enfants de ce terme.
$terms(array)requisLes termes à retournés dans un tableau d'objets ou d'ids. Seulement les termes descendants seront choisis.
$taxonomy(string)requisNom de la taxonomie des termes à retournés.
$ancestors(array)optionnelTableau des termes parents qui ont déjà été identifié. Passé par référence pour garder une trace des termes trouvées quand la hiérarchie est récursive. Est utile pour éviter les boucles de récursion infinies. Par soucis de performance, $term_id est utilisé comme clé de ce tableau et a pour valeur 1.
Valeur par défaut : array()
Description / Informations supplémentaires
Si $terms est un tableau d'objets, _get_term_children() retournera un tableau d'objets. Si $terms est un tableau d'ids, _get_term_children() retournera un tableau d'ids.
Retourne
(array|WP_Error) Retourne l'ensemble de $terms qui sont les descendants de $term_id.
Déclaration et structure de la fonction _get_term_children()
_get_term_children() est déclarée dans le fichier wp-includes/taxonomy.php à la ligne 3948 :
function _get_term_children( $term_id, $terms, $taxonomy, &$ancestors = array() ) {
$empty_array = array();
if ( empty( $terms ) ) {
return $empty_array;
}
$term_id = (int) $term_id;
$term_list = array();
$has_children = _get_term_hierarchy( $taxonomy );
if ( $term_id && ! isset( $has_children[ $term_id ] ) ) {
return $empty_array;
}
// Include the term itself in the ancestors array, so we can properly detect when a loop has occurred.
if ( empty( $ancestors ) ) {
$ancestors[ $term_id ] = 1;
}
foreach ( (array) $terms as $term ) {
$use_id = false;
if ( ! is_object( $term ) ) {
$term = get_term( $term, $taxonomy );
if ( is_wp_error( $term ) ) {
return $term;
}
$use_id = true;
}
// Don't recurse if we've already identified the term as a child - this indicates a loop.
if ( isset( $ancestors[ $term->term_id ] ) ) {
continue;
}
if ( (int) $term->parent === $term_id ) {
if ( $use_id ) {
$term_list[] = $term->term_id;
} else {
$term_list[] = $term;
}
if ( ! isset( $has_children[ $term->term_id ] ) ) {
continue;
}
$ancestors[ $term->term_id ] = 1;
$children = _get_term_children( $term->term_id, $terms, $taxonomy, $ancestors );
if ( $children ) {
$term_list = array_merge( $term_list, $children );
}
}
}
return $term_list;
}
Fonctions utilisées par _get_term_children()
_get_term_hierarchy()Retourne l'id des termes enfants d'une taxonomie.
_get_term_children()Retourne l'ensemble de $terms qui sont les descendants de $term_id.
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_children()
dans le CMS WordPress
Sources
Codex WordPress : _get_term_children()
Autres fonctions dans le même fichier : wp-includes/taxonomy.php