wp_set_post_terms( int $post_id = 0, string|array $tags = '', string $taxonomy = 'post_tag', bool $append = false )
Associe un terme à un poste.
Paramètres
$post_id(int)optionnelId du poste. La valeur par défaut n'est pas l'id de la variable global $post.
Valeur par défaut : 0
$tags(string|array)optionnelUn 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)optionnelNom de la taxonomie.
Valeur par défaut : 'post_tag'
$append(bool)optionnelSi 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
Description / Informations supplémentaires
Cette fonction ne fonctionne que sur les postes natifs. Pour des types de poste personnalisés, utilisez wp_set_object_terms().
Si $tags est laissé vide, les termes du poste seront dissociés pour la taxonomie donnée.
Retourne
(array|false|WP_Error) Tableau d'ids (term_taxonomy_id) des termes nouveaux termes associés. WP_Error ou false si échec.
Déclaration et structure de la fonction wp_set_post_terms()
wp_set_post_terms() est déclarée dans le fichier wp-includes/post.php à la ligne 5408 :
function wp_set_post_terms( $post_id = 0, $terms = '', $taxonomy = 'post_tag', $append = false ) {
$post_id = (int) $post_id;
if ( ! $post_id ) {
return false;
}
if ( empty( $terms ) ) {
$terms = array();
}
if ( ! is_array( $terms ) ) {
$comma = _x( ',', 'tag delimiter' );
if ( ',' !== $comma ) {
$terms = str_replace( $comma, ',', $terms );
}
$terms = explode( ',', trim( $terms, " \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 ) ) {
$terms = array_unique( array_map( 'intval', $terms ) );
}
return wp_set_object_terms( $post_id, $terms, $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ù est utilisée la fonction wp_set_post_terms()
dans le CMS WordPress
Exemples
$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 );
// 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