質問: update_post_metaとdelete_post_metaをフックする方法 私はまだ頭の中で物事に夢中になっているので、次のタスクをやろうとしています。update_post_metaが起動した場合は、meta_keyが何かに等しいかどうかを確認してください(特定のmeta_keyが使用されている場合はコードをトリガーします)。探しているメタキーがあれば、更新されているメタキーの$post->idを知る必要があるコードを実行します。私はdelete_post_metaにもフックする必要があります。そのような種類のものは上記のように逆になります。update_post_metaとdelete_post_metaにフックするためのコード例を私に提供できる人はいますか?
回答: janの回答は、カスタム投稿がedit postページから削除された場合を除いて、上記のほとんどをカバーしています。これは、wp-admin/admin-ajax.phpの呼び出しを介して、メタデータの下にある[削除]ボタンをクリックすると同時に非同期的に行われます。残念ながら、これはmeta.phpのdelete_metadata()関数を迂回し、代わりにwp-admin/includes/post.phpのdelete_meta()を呼び出します(wp-includes/post.phpと混同しないでください)。まだ使用できるアクションは2つあります。delete_postmeta(削除前)、およびdeleted_postmeta(削除後)です。どちらもメタデータのidである単一のパラメータ$midを受け入れます(not the key)。以下を使用してメタデータオブジェクトを取得できます。$meta = get_post_meta_by_id($mid); meta_id、post_id、meta_key、およびmeta_valueを持つオブジェクトを返します。もちろん、deleted_postmetaが呼ばれるまでにメタデータは削除されているのでget_post_meta_by_id()は機能しません(ちょっとそのアクションが役に立たなくなります)投稿の編集ページからカスタムメタデータを更新する場合も同様です。 meta.phpのupdate_metadata()関数(およびそのアクション)はnot呼び出されますが、代わりにwp-admin/includes/post.phpのupdate_meta()関数が呼び出されます。ここでもupdate_postmetaとupdated_postmetaの2つのアクションがあります。引数は$ meta_id、$ post_id、$ meta_key、$ meta_valueです。