WordPress

投稿時に複数のアドレスにお知らせメールを送信する。その1:【43日目】WordPress1日1プラグイン

更新日:

ようこそのお運びで、厚く御礼申し上げます。
43日目です。今回は更新時を取得して、メール送信をしてみます。

投稿時に、複数のアドレスにお知らせメールを送信する。

記事を投稿したら、指定した複数のメールアドレスにお知らせメールを送信します

  1. 記事を更新するときをフックする
  2. メールアドレスや本文を指定する
  3. メールを送信する

まずは、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」というものをフックすると細かくわけれそうなのがわかりました。

バージョンがあがる毎に、新しい関数がやっぱり増えたり、進化していったり・・・。ググると古い情報もあるので、なかなか追いつくのが大変だなー。次回はもうちょっと、公開時の場合分けしてみようと思います。

-WordPress
-, , ,

Copyright© アルパカ@ラボ , 2019 All Rights Reserved Powered by AFFINGER5.