web-dev-qa-db-ja.com

更新前の投稿メタを取得する(SAVE_POST中)

ポストエディタにカスタムフィールドがあり、値を _ aaa _ から _ zzz _ ..に変更したとします。

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

   }
, 1);

そのメタキーの古い値( _ aaa _ )を取得するにはどうすればいいですか? save_postの間に(もっと早い優先順位でも)、 _ zzz _ を得ます。

2
T.Todua

save_postインポート、投稿/ページ編集フォーム、xmlrpc、または電子メールによる投稿など、投稿またはページが作成または更新されるたびに実行されます。アクション関数の引数:投稿IDと投稿オブジェクト。データがデータベースに保存された後に実行されます。

上の段落はWP Codexから引用されています。

そのため、新しい値をDBに保存した後に起動されるため、このフックを使用して古い値を取得することはできません。 WPにはwp_insert_postという別のアクションフックがありますが、残念ながらこのフックはsave_postと同じことをします。

あるいは、フィルタを使用して仕事を終わらせることもできます。 WPは、保存中または保存前に投稿を編集するためのフィルタをほとんど提供しません。 wp_insert_post_datacontent_save_pre のように動作するかもしれません、と思います。

更新

ここ はこのトピックに関するもう1つのディスカッションです。

2
Anwer AR

私がしたトリックは:

1)入力を挿入した、隠しメタボックスを作成しました。値はcurrent_meta_valueです。
2)save_postの間、私はnew_meta_valueに対してそれをチェックしました。

それがすべてでした。

0
T.Todua