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