get_term_by( string $field, string|int $value, string $taxonomy = '', string $output = OBJECT, string $filter = 'raw' )
Obtient toute les données d'un terme en fonction d'un champ de recherche donné.
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
Sources
Codex Wordpress : get_term_by()
Autres fonctions dans le même fichier : wp-includes/taxonomy.php