WordPressの新規・編集の投稿でメールを送信する

2022年7月14日

はじめに

クライアントから記事を投稿した際に、グループメールに通知を送って欲しいと要望がありました。
新規・編集のどちらかを行った時に、通知メールを飛ばす機能を追加することにしました。

 

設定

WordPressの基本の投稿 及び カスタムタイプで保存をした時に呼び出されるフックとして「save_post」というものが用意されています。
これを利用して、リビジョン・自動下書き・指定のポストタイプ以外を除外してメールを送信する仕組みを組み込みます。

下記のコードを functions.php に設定します。

function my_project_updated_send_email( $post_ID ) {
  // リビジョンならメールを送らない。
  if ( wp_is_post_revision( $post_ID ) )
    return;

  // 自動下書きはメールを送らない。
  if(get_post_status($post_ID) == 'draft')
    return;

  // 指定のポストタイプ以外はメールを送らない。
  if(!in_array(get_post_type($post_ID), array('post', 'page', 'custom_post')))
    return;

  $post_title = get_the_title($post_ID);
  $post_url = get_permalink($post_ID);
  $subject = '投稿が更新されました';
  $message = "サイトで投稿が更新されました:\n\n";
  $message .= $post_title . ": " . $post_url;
  // 管理者へメールを送る。
  wp_mail( '[email protected]', $subject, $message );
}
add_action( 'save_post', 'my_project_updated_send_email' );

 

WordPressのドキュメントが参考になりました。
https://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7/save_post

  • この記事を書いた人

カバノキ

印刷会社のWEB部隊に所属してます。 WEB制作に携わってから、もう時期10年になります。 普段の業務では、PHPをメインにサーバーサイドの言語を扱っています。 最近のお気に入りはJavascriptです。 Vue.jsを狂喜乱舞しながら、社内に布教中です。

-WordPress
-