Description

$value n'est pas échappée si $field prend pour valeur 'name', si requis, vous devez le faire vous-même.

La valeur de $field par défaut est 'id'.

Il est possible qu'une recherche avec $field = 'name' puisse donner plusieurs résultats. Le premier sera toujours retourné.

Paramètres

$field

(string) (Requis) Soit 'slug', 'name', 'id' ou 'ID' (term_id), ou 'term_taxonomy_id'.

$value

(string | int) (Requis) Valeur en fonction du champ de recherche.

$taxonomy

(string) (Optionnel) Nom de la taxonomie. Optionnel si $field = 'term_taxonomy_id'.

Valeur par défaut : ''

$output

(string) (Optionnel) Le type voulu de la sortie.

  • OBJECT pour l'objet WP_Term
  • ARRAY_A pour un tableau associatif
  • ARRAY_N pour un tableau numéroté

Valeur par défaut : OBJECT

$filter

(string) (Optionnel) De quelle façon nettoyer les champs du terme.

Valeur par défaut : 'raw'

Retourne

(WP_Term | array | bool) Retourne une instance de WP_Term, ou un tableau en fonction de la valeur de $output. False si la taxonomie n'existe pas ou si le terme n'a pas été trouvé.

Structure de la fonction get_term_by()

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

function get_term_by( $field, $value, $taxonomy = '', $output = OBJECT, $filter = 'raw' ) {

    // 'term_taxonomy_id' lookups don't require taxonomy checks.
    if ( 'term_taxonomy_id' !== $field && ! taxonomy_exists( $taxonomy ) ) {
        return false;
    }

    // No need to perform a query for empty 'slug' or 'name'.
    if ( 'slug' === $field || 'name' === $field ) {
        $value = (string) $value;

        if ( 0 === strlen( $value ) ) {
            return false;
        }
    }

    if ( 'id' === $field || 'ID' === $field || 'term_id' === $field ) {
        $term = get_term( (int) $value, $taxonomy, $output, $filter );
        if ( is_wp_error( $term ) || null === $term ) {
            $term = false;
        }
        return $term;
    }

    $args = array(
        'get'                    => 'all',
        'number'                 => 1,
        'taxonomy'               => $taxonomy,
        'update_term_meta_cache' => false,
        'orderby'                => 'none',
        'suppress_filter'        => true,
    );

    switch ( $field ) {
        case 'slug':
            $args['slug'] = $value;
            break;
        case 'name':
            $args['name'] = $value;
            break;
        case 'term_taxonomy_id':
            $args['term_taxonomy_id'] = $value;
            unset( $args['taxonomy'] );
            break;
        default:
            return false;
    }

    $terms = get_terms( $args );
    if ( is_wp_error( $terms ) || empty( $terms ) ) {
        return false;
    }

    $term = array_shift( $terms );

    // In the case of 'term_taxonomy_id', override the provided `$taxonomy` with whatever we find in the DB.
    if ( 'term_taxonomy_id' === $field ) {
        $taxonomy = $term->taxonomy;
    }

    return get_term( $term, $taxonomy, $output, $filter );
}

Fonctions utilisées par get_term_by()

get_terms()

Retourne les termes pour une taxonomie donnée ou une liste de taxonomies.

taxonomy_exists()

Détermine si un nom de taxonomie existe.

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_by() dans le CMS Wordpress

Exemple

// Recherche par nom :
$category = get_term_by('name', 'Nouvelles actualités', 'category');

// Recherche par slug :
$category = get_term_by('slug', 'nouvelles-actualites', 'category');

// Recherche par id sur une taxonomie personnalisée :
$category = get_term_by('id', 12, 'taxonomie_perso');

Sources

Codex Wordpress : get_term_by()

Autres fonctions dans le même fichier : wp-includes/taxonomy.php

Retour