Description

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.

Paramètres

$term_id

(int) (Requis) Id du terme parent. Tous les termes retournés doivent être des enfants de ce terme.

$terms

(array) (Requis) Les termes à retournés.

  • Un tableau d'objets ou d'ids de termes.
  • Seulement les termes descendants seront choisis.
$taxonomy

(string) (Requis) Nom de la taxonomie des termes à retournés.

$ancestors

(array) (Optionnel) Tableau 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()

Retourne

(array | WP_Error) Retourne l'ensemble de $terms qui sont les descendants de $term_id.

Structure de la fonction _get_term_children()

Définie dans le fichier wp-includes/taxonomy.php à la ligne 3635 :

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ù trouver 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

Retour