Description

Cette fonction ne fonctionne que sur les postes natifs. Pour des types de poste personnalisés, utilisez wp_set_object_terms().

Paramètres

$post_id

(int) (Optionnel) Id du poste. Ne prend pas par défaut l'id de la global $post.

$tags

(string | array) (Optionnel) Un tableau de termes à associer à un poste, ou une chaîne de termes séparés par des virgules. Les taxonomies hiérarchiques doivent toujours passer des ids plutôt que des noms puisque les termes enfants peuvent avoir le même nom qu'un parent.

Valeur par défaut : ''

$taxonomy

(string) (Optionnel) Nom de la taxonomie.

Valeur par défaut : 'post_tag'

$append

(bool) (Optionnel) Si true, ne supprime pas la relation des termes existants avec le poste. Si false, supprime la relation avec les termes existants et les remplace par les nouveaux.

Valeur par défaut : false

Retourne

(array | false | WP_Error) Tableau d'ids (term_taxonomy_id) des termes nouveaux termes associés. WP_Error ou false si échec.

Structure de la fonction wp_set_post_terms()

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

function wp_set_post_terms( $post_id = 0, $tags = '', $taxonomy = 'post_tag', $append = false ) {
    $post_id = (int) $post_id;

    if ( ! $post_id ) {
        return false;
    }

    if ( empty( $tags ) ) {
        $tags = array();
    }

    if ( ! is_array( $tags ) ) {
        $comma = _x( ',', 'tag delimiter' );
        if ( ',' !== $comma ) {
            $tags = str_replace( $comma, ',', $tags );
        }
        $tags = explode( ',', trim( $tags, " \n\t\r\0\x0B," ) );
    }

    /*
     * Hierarchical taxonomies must always pass IDs rather than names so that
     * children with the same names but different parents aren't confused.
     */
    if ( is_taxonomy_hierarchical( $taxonomy ) ) {
        $tags = array_unique( array_map( 'intval', $tags ) );
    }

    return wp_set_object_terms( $post_id, $tags, $taxonomy, $append );
}

Fonctions utilisées par wp_set_post_terms()

_x()

Retourne une chaîne traduite en fonction de son contexte.

wp_set_object_terms()

Créer une relation entre un objet donné et un terme.

is_taxonomy_hierarchical()

Détermine si la taxonomie est hiérarchique.

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

Exemples

Ajouter un terme non hiérarchique :
$tag = '5';
// Mauvais. Le terme sera ajouté avec le nom '5'.

$tag = 5;
// Mauvais. La aussi le terme sera ajouté avec le nom '5'
// car les valeurs qui ne sont pas passées dans un tableau seront converties en chaîne.

$tag = array( '5' );
// Mauvais. La aussi le terme sera ajouté avec le nom '5'.

$tag = array( 5 );
// Correcte.

wp_set_post_terms( $post_id, $tag, $taxonomy );
Ajouter un terme hiérarchique :
// Pour obtenir l'id du terme vous pouvez utiliser :
$term_id = term_exists( $term, $taxonomy, $parent );

// Vous pouvez aussi passer la taxonomie par référence :
wp_set_post_terms( $post_id, $term, &$taxonomy );

Sources

Codex Wordpress : wp_set_post_terms()

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

Retour