web-dev-qa-db-fra.com

récupère la méta avant sa mise à jour (pendentif SAVE_POST)

Disons que j'ai un champ personnalisé dans l'éditeur de publication et que je change la valeur deAAAenZZZ..:

add_action('save_post', 
   function($post){
      $value = get_post_meta($post->ID, 'mykey');

   }
, 1);

Comment obtenir l'ancienne valeur (AAA) de cette méta-clé? pendant save_post (même avant la première priorité), je reçoisZZZ

2
T.Todua

save_post S'exécute chaque fois qu'un article ou une page est créé ou mis à jour, qu'il s'agisse d'un fichier d'importation, d'un formulaire d'édition/d'édition de page, xmlrpc ou d'un envoi par courrier électronique. Arguments de la fonction d'action: identifiant et objet. S'exécute une fois les données enregistrées dans la base de données.

le paragraphe ci-dessus est tiré de WP Codex.

vous ne pouvez donc pas utiliser ce point d'ancrage pour obtenir une valeur plus ancienne car il se déclenche après l'enregistrement de nouvelles valeurs dans la base de données. WP a un autre point d'ancrage d'action nommé wp_insert_post mais malheureusement, ce point d'ancrage fait la même chose que save_post

sinon, vous pouvez utiliser des filtres pour faire le travail. WP fournit peu de filtres pour modifier la publication lors de la sauvegarde ou avant la sauvegarde dans la base de données. comme wp_insert_post_data & content_save_pre pourrait fonctionner pour vous, je pense.

Mise à jour

ici est une autre discussion sur ce sujet qui pourrait vous être utile.

2
Anwer AR

Le truc que j'ai fait était:

1) Création d'une meta box cachée, où j'ai inséré une entrée, avec la valeur de current_meta_value
2) au cours de save_post, je l’ai vérifiée par rapport à new_meta_value.

c'était tout.

0
T.Todua