Description

Si aucun terme n'est donné, la fonction vérifie si l'objet est associé à des termes dans une taxonomie donnée.

Paramètres

$object_id

(int) (Requis) Id de l'objet (ex : poste, lien, ...)

$taxonomy

(string) (Requis) Nom de la taxonomie.

$terms

(int | string | array) (Optionnel) Id, nom ou slug du/des terme(s) à vérifier ou un tableau de ceux-ci.

Valeur par défaut : null

Retourne

(bool | WP_Error) WP_Error s'il y a une erreur d'entrée.

Structure de la fonction is_object_in_term()

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

function is_object_in_term( $object_id, $taxonomy, $terms = null ) {
    $object_id = (int) $object_id;
    if ( ! $object_id ) {
        return new WP_Error( 'invalid_object', __( 'Invalid object ID.' ) );
    }

    $object_terms = get_object_term_cache( $object_id, $taxonomy );
    if ( false === $object_terms ) {
        $object_terms = wp_get_object_terms( $object_id, $taxonomy, array( 'update_term_meta_cache' => false ) );
        if ( is_wp_error( $object_terms ) ) {
            return $object_terms;
        }

        wp_cache_set( $object_id, wp_list_pluck( $object_terms, 'term_id' ), "{$taxonomy}_relationships" );
    }

    if ( is_wp_error( $object_terms ) ) {
        return $object_terms;
    }
    if ( empty( $object_terms ) ) {
        return false;
    }
    if ( empty( $terms ) ) {
        return ( ! empty( $object_terms ) );
    }

    $terms = (array) $terms;

    $ints = array_filter( $terms, 'is_int' );
    if ( $ints ) {
        $strs = array_diff( $terms, $ints );
    } else {
        $strs =& $terms;
    }

    foreach ( $object_terms as $object_term ) {
        // If term is an int, check against term_ids only.
        if ( $ints && in_array( $object_term->term_id, $ints, true ) ) {
            return true;
        }

        if ( $strs ) {
            // Only check numeric strings against term_id, to avoid false matches due to type juggling.
            $numeric_strs = array_map( 'intval', array_filter( $strs, 'is_numeric' ) );
            if ( in_array( $object_term->term_id, $numeric_strs, true ) ) {
                return true;
            }

            if ( in_array( $object_term->name, $strs, true ) ) {
                return true;
            }
            if ( in_array( $object_term->slug, $strs, true ) ) {
                return true;
            }
        }
    }

    return false;
}

Fonctions utilisées par is_object_in_term()

wp_cache_set()

Sauvegarde les données dans le cache.

__()

Retourne la traduction d'un texte.

wp_list_pluck()

Retire certain champ d'une liste d'objet.

get_object_term_cache()

Retourne les objets de termes du cache pour un id d'objet donné.

wp_get_object_terms()

Retourne les termes associés aux ids d'objets donnés, en fournissant les taxonomies correspondantes.

is_wp_error()

Vérifie si la variable est une erreur WordPress.

Où trouver la fonction is_object_in_term() dans le CMS Wordpress

Exemple

if ( is_object_in_term( $post->ID, 'custom_taxonomy_name', 'term_name' ) ) :
    echo 'YES';
else :
    echo 'NO';
endif;

Sources

Codex Wordpress : is_object_in_term()

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

Retour