目次
はじめに
クライアントから記事を投稿した際に、グループメールに通知を送って欲しいと要望がありました。
新規・編集のどちらかを行った時に、通知メールを飛ばす機能を追加することにしました。
設定
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( 'hoge@ahoo.co.jp', $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