Description

Si la méta-donnée n'existe pas pour ce poste, elle sera ajoutée.

Peut être utilisé à la place de la fonction add_post_meta().

Caractère d'échappement

Les valeurs de méta-donnée d'un poste sont passées à la fonction php stripslashes() pour être ensuite stockées en base de donnée. Il faudra donc faire attention si vous avez besoin de passer des valeurs (comme en JSON) qui pourraient inclure le caractère d'échappement anti-slash (\).

Ne pas stocker de valeurs échappées

Considérons la valeur JSON {"key":"value with \"escaped quotes\""}.

<?php
$escaped_json = '{"key":"value with \\"escaped quotes\\""}';
update_post_meta( $id, 'escaped_json', $escaped_json );
$broken = get_post_meta( $id, 'escaped_json', true );
/*
$broken, après être passée par stripslashes() devient imparsable :
{"key":"value with "escaped quotes""}
*/
?>

Contournement

En ajoutant un niveau d'échappement en plus avec la fonction wp_slash(), on peut compenser l'appelle à stripslashes().

<?php
$escaped_json = '{"key":"value with \\"escaped quotes\\""}';
update_post_meta( $id, 'double_escaped_json', wp_slash($escaped_json) );
$fixed = get_post_meta( $id, 'double_escaped_json', true );
/*
$fixed, après être passée par stripslashes() devient stockable comme désiré :
{"key":"value with \"escaped quotes\""}
*/
?>

Paramètres

$post_id

(int) (Requis) Id du poste.

$meta_key

(string) (Requis) Clé de la méta-donnée.

$meta_value

(mixed) (Requis) Valeur de la méta-donnée. Doit être sérialisable si non scalaire.

$prev_value

(mixed) (Optionnel) Valeur précédente à vérifier avant la mise à jour. Si spécifiée, met seulement à jour la méta-donné correspondant à cette valeur.

Valeur par défaut : ''

Retourne

(int | bool) Id de la nouvelle méta-donnée ajoutée si celle-ci n'existait pas, true si la mise à jour est un succès, false si échec ou si $meta_value à la même valeur que celle en base de donnée.

Structure de la fonction update_post_meta()

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

function update_post_meta( $post_id, $meta_key, $meta_value, $prev_value = '' ) {
    // Make sure meta is added to the post, not a revision.
    $the_post = wp_is_post_revision( $post_id );
    if ( $the_post ) {
        $post_id = $the_post;
    }

    return update_metadata( 'post', $post_id, $meta_key, $meta_value, $prev_value );
}

Fonctions utilisées par update_post_meta()

wp_is_post_revision()

Détermine si un poste spécifié est une révision.

update_metadata()

Met à jour la méta-donnée d'un objet donné. Si la méta-donnée n'existe pas pour cet objet, elle sera ajoutée.

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

Exemples

Mettre à jour un modèle de page utilisé par une page :
update_post_meta( $page_id, '_wp_page_template', 'new_template.php' );
Changer seulement la valeur de key_1 correspondant à la valeur Sad :
[key_1] => 'Happy'
[key_1] => 'Sad'
[key_2] => 'Gregory'
[my_key] => 'Steve'

update_post_meta( 76, 'key_1', 'Happy', 'Sad' );

Sources

Codex Wordpress : update_post_meta()

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

Retour