ようこそのお運びで、厚く御礼申し上げます。
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」というものをフックすると細かくわけれそうなのがわかりました。
バージョンがあがる毎に、新しい関数がやっぱり増えたり、進化していったり・・・。ググると古い情報もあるので、なかなか追いつくのが大変だなー。次回はもうちょっと、公開時の場合分けしてみようと思います。