投稿が更新されると、起動されるフックがいくつかあります。
'pre_post_update'
アクションだけで発射される前にポストが更新され、渡された引数が2以下のとおりです。$post_ID
そして$data
それは、の配列であるすべてのポストテーブルの他のデータベースcolums
'transition_post_status'
は、更新時に起動されるフックであり、3つの引数を渡します:$ new_post_status、$old_post_status
および$post
(object)。
- 次に、他の2つの遷移フックが起動されますが、それらは動的に名前が付けられます。つまり、起動される有効なアクションは、古い投稿ステータスと新しい投稿ステータスに依存します。
"{$old_status}_to_{$new_status}"
および"{$new_status}_{$post->post_type}"
。最初に唯一の投稿オブジェクトを引数として渡し、2番目に投稿IDと投稿オブジェクトを渡します。ここでドキュメントを検索します。
'edit_post'
2つの引数を渡します:$post_ID
および$post
(オブジェクト)
'post_updated'
3つの引数を渡す:$post_ID
、$post_after
(更新$post_before
後のオブジェクトのポスト)、(更新前のオブジェクトのポスト)
- 別の動的なフック:
"save_post_{$post->post_type}"
標準のポストのために例えば、ポストタイプに依存している'save_post_post'
とページ用で'save_post_page'
、このフックパス3つの引数:$post_ID
、$post
(オブジェクト)と$update
それがブール値(trueまたはfalse)でアップデートを実行するとき真である、で実際、このフックは、投稿が初めて保存されたときにも起動されます。
- '
save_post
'は、更新時と最初の保存時に発生し、前のフックと同じ3つの引数を渡します。
- '
save_post_{$post_type}
'は、更新時と最初の保存時に発生し、前のフックと同じ最初の2つの引数を渡します。
- 最後に'
wp_insert_post
'があり、これは更新時と最初の保存時に起動され、前の2つのフックと同じ3つの引数を渡します。
これらのフックは、ポストが更新されるたびに、バックエンドの管理ページ経由wp_update_post
または「手動」またはwp_insert_post
関数を使用して更新されたときに起動されます。
管理ページを使用して投稿が更新されると、追加のフックが起動します。例は'update_post_redirect'
または'post_updated_messages'
です。( 使用例については、こちらとこの WPSEの回答をご覧ください)。
いくつかのフック引数を使用したい場合は、それが最初ではなく、add_action
呼び出しで明示的に宣言する必要があることに注意してください。
例えば、あなたが使用したい場合は'$update'
、引数を(第三であること)の'save_post'
フックあなたが追加する必要がある3
よう$accepted_args
にPARAM add_action
(ドキュメントを参照してください):
// if you don't add 3 as as 4th argument, this will not work as expected
add_action( 'save_post', 'my_save_post_function', 10, 3 );
function my_save_post_function( $post_ID, $post, $update ) {
$msg = 'Is this un update? ';
$msg .= $update ? 'Yes.' : 'No.';
wp_die( $msg );
}
タイミングに関する最後の注意:アクションがトリガーさadd_action
れる前に呼び出されることを確認する必要があります。そうでない場合は何も実行されません。
たとえば、このコード:
wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
フックが起動された後にアクションが追加されるため、何も実行されません。これは簡単に認識できますが、実際のコードでは常にそうとは限りません。
save_post
にスペースがありますが、これはタイプミスですか、それとも元のコードにありましたか?また、開発中にデバッグを有効にします。