web-dev-qa-db-ja.com

"save_post"アクションフックを呼び出さずに投稿を保存/変更することは可能ですか?

投稿を保存するときに実行される save_post フックがあります。実際、改訂や自動保存もこのフックを呼び出します。単に公開から下書きにステータスを変更したとしても、save_postフックが起動されます。

save_postを呼び出さずに投稿 を変更 できる方法はありますか(通常のwpメソッドを使用) (カスタムフィールドの編集など)

transition_post_statusupdated_postmetaに結びつける必要があるのか​​、それともsave_postで十分なのか、疑問に思います。

3
Xeoncross

TL; DR:いいえ、 save_post を使用できます。あなたがメタデータのプログラムによる変更のみを「記事を変更する」と考えていない限り。


(理論的には) save_post アクションフックを引き起こさずに投稿を修正する方法があります:データベースの直接修正。

しかし、プラグインやテーマの作者が正しい考えを持っていない人にとってはそのような道をたどり、他の人にとっては考えられる他のアクションフックをすべて回避することになります。

あなたが言及する他のフックは全く異なるユースケースのためのものです:
update_post_meta またはupdated_postmetaは、メタデータが変更されたときにのみ実行されます。つまり、タイトルまたはコンテンツのみが編集されたときには実行されません。
transition_post_status は、公開された投稿を編集しただけでは実行されません。

Iffあなたは、投稿メタデータのプログラムによる更新を投稿自体の変更とみなします。確かに update_post_metaフック などに結びつけなければなりません。 。 update_post_meta() 関数は update_metadata()source on trac )を呼び出しますが、いくつかのアクションフックを実行します(リンクされたソースを参照)。 save_post ではありません。

6
Johannes Pille