これまでにに引き続きWeb Pushの実装の話です。
前回収集したendpoint, auth, p256dhを用いて、投稿時にWeb Pushを送信しましょう。
投稿時に動いているhookの中から”transition_post_status”を使います。
このhookは各投稿の保存時(状態変更時)に発火し、引数として変更後のstatus、変更前のstatus、変更対象のWP_Postを受け取るものです。
これを用いて、statusが”publish”に変わったときのみWeb Pushを送信しています。
function send_push($newst, $oldst, $published_post) {
if ( 'publish' != $newst || 'publish' == $oldst ) {
return;
}
{"Web Push送信処理に続く"}
}
add_action ( 'transition_post_status', 'send_push', 10, 3 );
このhookはwp_cronで動く予約投稿の際にも動きます。が、ここで1点気を付けないといけない部分があり、cronで動いている際にはcurrent_postがセットされていない状態のまま動くことになるので明示的に第3引数から各データを指定する必要が出てきます。
具体的なWeb Pushの送信処理は…