ワードプレスでレビュー待ちの投稿が投稿者や寄稿者から送信されたときにメールを管理者宛に送るコードをご紹介します。


投稿のステータスがPending以外からPendingに変わったときがレビュー待ちになったときになります

transition_post_statusアクションで投稿のステータスがPending以外からPending変わったときに、編集者と管理者のメールアドレスを取得してメールを送信します。

※下記コードはテーマのFunctions.phpやプラグインに導入されてみてください。

function adminmail_pending( $new_status, $old_status, $post ) {
    if ( $old_status != 'pending' && $new_status == 'pending' ) {
        $blogname = get_option('blogname');
        $post_title = $post->post_title;
        $subject = $blogname." にて承認待ちの記事が投稿されています(".$post_title.")";
        $message = "記事".$post_title."が承認待ちです。\r\n";
        $message .= "\r\n";
        $message .= "記事の承認URLは下記となります: \r\n";
        $message .= wp_specialchars_decode(get_edit_post_link( $post->ID ), ENT_QUOTES) . "\r\n";
        
        //編集者のメールアドレスを取得し編集者全員にメールを送ります
        $args= array('role' => 'editor');
        $users= get_users($args);
        $editor_mails=array();
        if(sizeof($users)>0){
            foreach($users as $user){
                $mail= esc_html($user->user_email);
                array_push($editor_mails,$mail);
            }
        }
        if(sizeof($editor_mails)>0){
            for($i=0; $i<sizeof($editor_mails); $i++){
                $to = $editor_mails[$i];
                $r = wp_mail( $to, $subject, $message );
            }
        }
        
        //管理者にメールを送ります
        $r = wp_mail( get_option('admin_email'), $subject, $message );

    }
}
add_action( 'transition_post_status', 'adminmail_pending', 10, 3 );

wp_mailはワードプレスの標準メール関数です。
wp_mail(送信先、タイトル、メッセージ)のような形で簡単にメールを送信することが可能です。

※編集者にメールを送る必要がない場合は $args= array(‘role’ => ‘editor’); ~ $r = wp_mail( get_option(‘admin_email’), $subject, $message ); の前の行までを削除されてみてください。

WordPress ワードプレスのカスタマイズ、復旧、修復、プラグイン作成導入のご相談・ご依頼はWPドクターまでお気軽にお送りください。