私は投稿が更新されたときにフックしようとしますが、私はupdated_post_meta
以外のすべてのフックを実行しようとしません
add_action('updated_post_meta', 'my_function');
function my_function($post_id) {
echo 'This is my post ID : '.$post_id;
}
私はこのadd_action('save_post', 'my_function');
を試しましたが、idがエコーアウトされなかったか、あるいはおそらくこのメッセージは既にエコーされていますがリダイレクトヘッダが送信されたために決してレンダリングされません。
投稿が更新されると、起動されるフックがいくつかあります。
'pre_post_update'
はただ起動されるアクションですbefore投稿が更新され、渡される引数は2です。$post_ID
と$data
はallの配列です投稿テーブルのデータベース列'transition_post_status'
は更新時に起動されるフックで、3つの引数を渡します:$ new_post_status、$old_post_status
、および$post
(オブジェクト)。"{$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'
です。 (使用例については this および this WPSEの回答をご覧ください)。
いくつかのフック引数を使用したい場合は、それが最初ではなく、add_action
呼び出しで明示的に宣言する必要があることに注意してください。
例えば。 '$update'
フックの'save_post'
引数(3番目)を使用する場合は、3
を$accepted_args
パラメーターとして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 );
}
timingに関する最後の注意:add_action
が呼び出されることを確認する必要がありますbeforeアクションがトリガーされるか、アクションがトリガーされます何もしない。
例えば。このコード:
wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
フックが起動された後にアクションが追加されるため、何も実行されません。これは簡単に認識できますが、実際のコードでは常にそうとは限りません。
なぜpost_updated_messages
をフックしないのですか。そうすれば、デフォルトのワードプレスの投稿が更新されたのと同じように、このメッセージを表示できます。
add_filter('post_updated_messages', 'your_message');
function your_message(){
}
ここで例を見てください。
http://codex.wordpress.org/Function_Reference/register_post_type
post_updated_messages
の下