J'essaie de mettre à jour une méta de messages uniquement après son enregistrement ou sa mise à jour.
Ma fonction est assez simple
function update_test( $post_id ) {
update_post_meta($post_id, 'copied', '1');
update_post_meta($post_id, 'blurb', 'this value updated by save_post action');
}
add_action( 'save_post', 'update_test');
Lorsque j'ajoute un nouveau message sur wp-admin/post-new.php
, je peux voir que les valeurs des deux champs personnalisés ont déjà été mises à jour. Les champs eux-mêmes existent avec Advanced Custom Fields. Mais ne devrait pas être mis à jour tant que le message n'a pas été publié/enregistré et mis à jour. Pourquoi cela met-il à jour les champs dès le chargement du formulaire post-new.php?
Un brouillon ou "vide" est enregistré dès que vous créez un nouveau message. Ces nouveaux articles ont le post_status
de auto-draft
. Cochez cette case pour éviter que votre rappel ne se déclenche sur ces sauvegardes "vierges".
function update_test( $post_id, $post ) {
if (isset($post->post_status) && 'auto-draft' == $post->post_status) {
return;
}
update_post_meta($post_id, 'copied', '1');
update_post_meta($post_id, 'blurb', 'this value updated by save_post action');
}
add_action( 'save_post', 'update_test', 1, 2);
Vous pouvez également vérifier les constantes DOING_AJAX
et DOING_AUTOSAVE
.