WordPressで記事を初回投稿した時だけツイッターやフェイスブックにつぶやきたい、みたいなことがあると思います。
しかしWordPressで予め用意されているpublish_postなどのフックでは新規投稿時だけでなく他の記事ステータス変更時にも反応してしまいます。
そこで、
add_action( 'publish_post', 'sample_post' ,10 , 2);
function sample_post( $post_id , $post ){
if( $post->post_date != date('Y-m-d H:i:s') ) return ;
//~~新規投稿時の処理~~
}
こんな感じで$post->post_dateと現在時刻が一致していれば、としてあげると新規投稿かどうかを判定できます。
この例では新規投稿じゃなかった場合は処理をスルーすることで、新規投稿時のみ処理が行われるようにしました。
簡単にできそうなんですが、意外にこの問題に悩まされました。