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

はじめに

投稿が公開された際に、投稿記事を送信した著者にメール通知を送信しますか? 投稿の送信アドオンのフォームを作成する際に、送信された投稿のステータスを ドラフト または 審査待ち に設定できます。これにより、サイト管理者は記事が公開される前にレビューできます。記事が公開されても、著者は通知を受け取りませんが、サイトに簡単なコードスニペットを追加することで、著者に投稿が公開されたことを知らせる通知を簡単に送信できます。

このチュートリアルでは、これを達成するための各ステップを順を追って説明します!

投稿送信フォームの作成

このチュートリアルの目的のため、ゲスト投稿フォームはすでに作成済みです。しかし、投稿の送信アドオンでフォームを設定するのに支援が必要な場合は、こちらのドキュメントをご覧ください。このドキュメントには、このフォームを作成する方法についての詳細な手順が記載されています。

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

投稿タイトルアイキャッチ画像などのフィールドをマッピングしますが、送信が受信されたときに投稿ステータス審査待ちに変更して、公開前に投稿を確認できるようにします。

投稿ステータスを審査待ちまたはドラフトに設定する

投稿送信のメール通知設定

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

サイトにコードスニペットを追加する方法については、こちらのチュートリアルをご覧ください

/**
 * 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' );

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

投稿が公開された際のメッセージを希望どおりに変更する

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

注意:同じ名前の著者が複数いる場合、このスニペットは最初に見つかった名前に送信されます。

これで完了です。投稿が公開されると、著者は投稿送信に関するメール通知を受け取ります!

投稿送信時のメール通知の例

投稿の送信アドオンにユーザープロファイルを作成させたいですか? 投稿の送信を使用したプロフィールフォームの作成方法に関するチュートリアルをご覧ください。