ようこそのお運びで、厚く御礼申し上げます。
43日目です。今回は更新時を取得して、メール送信をしてみます。
投稿時に、複数のアドレスにお知らせメールを送信する。
記事を投稿したら、指定した複数のメールアドレスにお知らせメールを送信します。
- 記事を更新するときをフックする
- メールアドレスや本文を指定する
- メールを送信する
まずは、function.phpに書いてみます。
では、function.phpに以下のコードを書きました。
add_action('publish_post', 'paka3PostMail', 10, 2); function paka3PostMail($post_ID, $post){ $mail_address =array('****@****.com', '*****@**.jp'); $subject = "ブログ更新のお知らせ"; $content = $post->post_title; $link = get_permalink($post_ID); $message =<<<EOS ブログが更新されました。 ※今回のタイトル 「{$content}」 {$link} EOS; wp_mail( $mail_address, $subject, $message ); }
ポイントはどこ?
今回のポイントはまず一つは更新時の取得です。
- 「publish_post」をアクションフックしていますが、正確には{$new_status}_{$post->post_type}をフックすることになります。
(こちらのページを参照してください。)add_action('publish_post', 'paka3PostMail', 10, 2);
- 状態「$new_status」については、WordPress Codexの日本語版にまとめてくれていますので、こちらを参照してください。
※今回は「投稿やページが公開済み」の状態を取得するので「publish」となります。 - {$post->post_type}には、「post」の他に「page」や「カスタム投稿タイプ名」が設定できそうです。
次にメールの送信、こちらは「wp_mail」を使います。
- WordPressにはメール関数が用意されています。
送信先メールアドレスは配列で複数登録することもできます。wp_mail( $mail_address, $subject, $message );
- その他header(ccやFrom等)の設定も変えれます。
(WordPress Codex:wp_mail参照)
コードをプラグイン用のファイルにします
それではfunction.phpに書いたコードを消して、
「paka3_postMail.php」というファイルを作成し、以下のコードを記入します。
このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。
今回のまとめ
今回、アクションフックした「publish_post」これのフィルター名を探していたんですが、見つからなかったので「うーん」となったのですが、実際は{$new_status}_{$post->post_type}となっていて、さらに「transition_post_status」というものをフックすると細かくわけれそうなのがわかりました。
バージョンがあがる毎に、新しい関数がやっぱり増えたり、進化していったり・・・。ググると古い情報もあるので、なかなか追いつくのが大変だなー。次回はもうちょっと、公開時の場合分けしてみようと思います。