Paramètres

$term

(int | string) (Requis) Le terme à vérifier. Accepte l'id, le nom ou le slug du terme.

$taxonomy

(string) (Optionnel) Le nom de la taxonomie à utiliser.

Valeur par défaut : ''

$parent

(int) (Optionnel) Id du terme parent.

Valeur par défaut : null

Retourne

(mixed) Retourne null si le terme n'existe pas. Retourne l'id du terme si aucune taxonomie n'est spécifée et si le terme existe. Retourne un tableau de l'id du terme et l'id de la taxonomie du terme si la taxonomie est spécifiée et son terme existe. Retourne 0 si l'id du terme passé à la fonction vaut 0.

Structure de la fonction term_exists()

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

function term_exists( $term, $taxonomy = '', $parent = null ) {
    global $wpdb;

    $select     = "SELECT term_id FROM $wpdb->terms as t WHERE ";
    $tax_select = "SELECT tt.term_id, tt.term_taxonomy_id FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_id = t.term_id WHERE ";

    if ( is_int( $term ) ) {
        if ( 0 === $term ) {
            return 0;
        }
        $where = 't.term_id = %d';
        if ( ! empty( $taxonomy ) ) {
            // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber
            return $wpdb->get_row( $wpdb->prepare( $tax_select . $where . ' AND tt.taxonomy = %s', $term, $taxonomy ), ARRAY_A );
        } else {
            return $wpdb->get_var( $wpdb->prepare( $select . $where, $term ) );
        }
    }

    $term = trim( wp_unslash( $term ) );
    $slug = sanitize_title( $term );

    $where             = 't.slug = %s';
    $else_where        = 't.name = %s';
    $where_fields      = array( $slug );
    $else_where_fields = array( $term );
    $orderby           = 'ORDER BY t.term_id ASC';
    $limit             = 'LIMIT 1';
    if ( ! empty( $taxonomy ) ) {
        if ( is_numeric( $parent ) ) {
            $parent              = (int) $parent;
            $where_fields[]      = $parent;
            $else_where_fields[] = $parent;
            $where              .= ' AND tt.parent = %d';
            $else_where         .= ' AND tt.parent = %d';
        }

        $where_fields[]      = $taxonomy;
        $else_where_fields[] = $taxonomy;

        $result = $wpdb->get_row( $wpdb->prepare( "SELECT tt.term_id, tt.term_taxonomy_id FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_id = t.term_id WHERE $where AND tt.taxonomy = %s $orderby $limit", $where_fields ), ARRAY_A );
        if ( $result ) {
            return $result;
        }

        return $wpdb->get_row( $wpdb->prepare( "SELECT tt.term_id, tt.term_taxonomy_id FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_id = t.term_id WHERE $else_where AND tt.taxonomy = %s $orderby $limit", $else_where_fields ), ARRAY_A );
    }

    // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare
    $result = $wpdb->get_var( $wpdb->prepare( "SELECT term_id FROM $wpdb->terms as t WHERE $where $orderby $limit", $where_fields ) );
    if ( $result ) {
        return $result;
    }

    // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare
    return $wpdb->get_var( $wpdb->prepare( "SELECT term_id FROM $wpdb->terms as t WHERE $else_where $orderby $limit", $else_where_fields ) );
}

Fonctions utilisées par term_exists()

wp_unslash()

Supprime les slashes d'une chaîne ou d'un tableau de chaînes.

sanitize_title()

Nettoie et transforme une chaîne en slug qui peut être utilisé dans une url ou comme valeur d'attribut HTML.

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

Exemple

$term = term_exists( 'animaux', 'category' );
if ( $term !== 0 && $term !== null ) {
    echo 'La categorie existe';
}

$term = term_exists( 'chiens', 'post_tag' );
if ( $term !== 0 && $term !== null ) {
    echo 'L'étiquette existe';
}

Sources

Codex Wordpress : term_exists()

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

Retour