投稿公開時にメール通知を送信する方法

はじめに

投稿記事が公開されたときに、投稿記事を投稿した著者にメール通知を送りたいですか?Post Submissionsアドオン用のフォームを作成する際、投稿された記事のステータスをDraft (下書き)またはPending Review (レビュー待ち)に設定することができます。これにより、サイト管理者は記事が公開される前にその記事を確認することができます。記事が公開されると、投稿者には何の通知も届きませんが、サイトに小さなスニペットを追加することで、投稿者に投稿が公開されたことを知らせる通知を簡単に送ることができます。

このチュートリアルでは、その方法をステップごとに説明する!

投稿フォームの作成

このチュートリアルの目的のために、私たちはすでにゲスト投稿フォームを作成しました。しかし、Post Submissionsアドオンでフォームを設定する際にサポートが必要な場合は、こちらのドキュメントをご覧ください

フォームを作成したら、設定を調整する必要があります。フォームビルダー内で設定をクリックし、投稿投稿タブをクリックして設定を編集します。

投稿タイトル注目画像などのフィールドをマッピングするつもりですが、投稿を公開する前に投稿をレビューできるように、投稿を受け取ったときに投稿ステータスを レビュー保留に変更するつもりです。

投稿ステータスを「レビュー待ち」または「下書き」に設定する。

投稿通知メールの設定

次に、投稿が公開されたときに作者にメールを送るコード・スニペットを追加します。これを行うには、サイトにコードスニペットを追加する必要があります。

コード・スニペットをサイトに追加する際にヘルプが必要な場合は、こちらのチュートリアルをご覧ください

/**
 * Notify author when post-submission article is published
 *
 * @link   https://wpforms.com/developers/how-to-send-email-notification-on-post-submission-publish/
 */
 
function notifyauthor($post_id) {
     
    global $wpdb;
     
    $post = get_post($post_id); // Get the Post info
     
    $table_name = $wpdb->prefix . 'wpforms_entries'; // Our entries table
     
    $wpf_entry_fields = $wpdb->get_col( $wpdb->prepare( "SELECT fields FROM {$table_name} WHERE post_id = %d;", $post_id ) ); // Query the table based on Post ID
     
    $wpf_entry_data = json_decode( $wpf_entry_fields[0] ); // Decode the data
    // Set these to false now. They will be set to true if an email and name are found.
    // 
    $name_found = false;
    $email_found = false;
     
    // Look for the author's email address and name.
    foreach ( $wpf_entry_data as $item ) {
         
        // Find the name, only use the first
        if ( "name" == $item->type && false == $name_found ) {
            $author_name = $item->first;
            $name_found = true;
        }
         
        //Find the email address
        if ( "email" == $item->type ) {
            if( is_email( $item->value ) ){
                $author_email = $item->value;
                $email_found = true;
                break;
            } 
        }
    }
     
    // Email address found, so send the notification
    if( true == $email_found ){
        $subject = "Post Published: ".$post->post_title."";
        $message = "
              Hi there, " . esc_attr( $author_name ) . "!,
              Your post, \"" . $post->post_title . "\" has just been published.
              View post: " . get_permalink( $post_id ) . "
              Thanks";
           wp_mail( $author_email, $subject, $message );
    }
}
 
add_action( 'publish_post', 'notifyauthor' );

このスニペットでできることは、投稿の公開ステータスが更新されると、その名前を持つ作者を探し、見つかった場合はそのユーザーに関連付けられたメールアドレスを取得し、スニペットに入力されたメッセージを送信します。

投稿が公開されたら、メッセージをお好きなものに変更してください。

投稿者に送るこのメッセージは、好きなように更新することができます。この例では、メールの件名を投稿タイトルに設定し、メール通知内に投稿タイトルとパーマリンクを含めています。

注:複数の著者が同じ名前を使用している場合、このスニペットは最初に見つけた名前を使用します。

投稿が公開されると、投稿者に投稿通知メールが届きます!

投稿通知メールの例

投稿投稿アドオンでユーザープロフィールを作成したいですか?チュートリアル「投稿投稿を使ってプロフィールフォームを作成する方法」をご覧ください。