update_post_meta( int $post_id, string $meta_key, mixed $meta_value, mixed $prev_value = '' )
Met à jour la méta-donnée d'un poste en donnant son id.
Paramètres
$post_id(int)requisId du poste.
$meta_key(string)requisClé de la méta-donnée.
$meta_value(mixed)requisValeur de la méta-donnée. Doit être sérialisable si non scalaire.
$prev_value(mixed)optionnelValeur 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 : ''
Description / Informations supplémentaires
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\""}
*/
?>
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.
Déclaration et structure de la fonction update_post_meta()
update_post_meta() est déclarée dans le fichier wp-includes/post.php à la ligne 2638 :
function update_post_meta( $post_id, $meta_key, $meta_value, $prev_value = '' ) {
// Make sure meta is updated for the post, not for 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ù est utilisée la fonction update_post_meta()
dans le CMS WordPress
Exemples
update_post_meta( $page_id, '_wp_page_template', 'new_template.php' );
[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