<html lang="ja-jp" dir="ltr"><head></head><body>### [投稿送信の公開時にメール通知を送信する方法](https://wpforms.com/developers/how-to-send-email-notification-on-post-submission-publish/)

**公開日:** 2021年3月29日
**著者:** David Ozokoye

**コンテンツ:**

## はじめに

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

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

## 投稿送信フォームの作成

このチュートリアルの目的のために、ゲスト投稿フォームをすでに作成しました。 **投稿送信**アドオンを使用してフォームを設定するのに支援が必要な場合は、[このドキュメントをご覧ください](https://wpforms.com/docs/how-to-install-and-use-the-post-submissions-addon-in-wpforms/ "WPFormsで投稿送信アドオンをインストールして使用する方法")。詳細な手順が記載されています。

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

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

![投稿ステータスを審査待ちまたは下書きに設定](https://wpforms.com/wp-content/uploads/2021/03/post-submissions-settings.jpg)## 投稿送信のメール通知設定

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

サイトにコードスニペットを追加する方法については、[このチュートリアルをご覧ください](https://wpforms.com/developers/how-to-add-custom-php-or-javascript-for-wpforms/ "WPFormsにカスタムPHPまたはJavaScriptを追加する方法").

```

/**
 * 投稿送信記事が公開されたときに著者に通知する
 *
 * @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); // 投稿情報を取得
     
    $table_name = $wpdb-&gt;prefix . 'wpforms_entries'; // エントリテーブル
     
    $wpf_entry_fields = $wpdb-&gt;get_col( $wpdb-&gt;prepare( "SELECT fields FROM {$table_name} WHERE post_id = %d;", $post_id ) ); // 投稿IDに基づいてテーブルをクエリ
     
    $wpf_entry_data = json_decode( $wpf_entry_fields[0] ); // データをデコード
    // これらは現在falseに設定されています。メールと名前が見つかった場合にtrueに設定されます。
    // 
    $name_found = false;
    $email_found = false;
     
    // 著者のメールアドレスと名前を探します。
    foreach ( $wpf_entry_data as $item ) {
         
        // 名前を見つける、最初のもののみ使用
        if ( "name" == $item-&gt;type &amp;&amp; false == $name_found ) {
            $author_name = $item-&gt;first;
            $name_found = true;
        }
         
        //メールアドレスを見つける
        if ( "email" == $item-&gt;type ) {
            if( is_email( $item-&gt;value ) ){
                $author_email = $item-&gt;value;
                $email_found = true;
                break;
            } 
        }
    }
     
    //メールアドレスが見つかったので、通知を送信します
    if( true == $email_found ){
        $subject = "投稿公開: ".$post-&gt;post_title."";
        $message = "
              こんにちは、 " . esc_attr( $author_name ) . "さん！,
              あなたの投稿、「" . $post-&gt;post_title . "」が公開されました。
              投稿を表示: " . get_permalink( $post_id ) . "
              ありがとうございます";
           wp_mail( $author_email, $subject, $message );
    }
}
 
add_action( 'publish_post', 'notifyauthor' );
```

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

![投稿が公開されたときにメッセージを好きなように変更できます](https://wpforms.com/wp-content/uploads/2021/03/wpforms-send-email-notification.jpg)この著者に送信されるメッセージは、好きなように更新できます。この例では、メールの**件名**を投稿タイトルに設定し、その投稿タイトルとパーマリンクをメール通知に含めています。

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

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

![投稿送信時のメール通知の例](https://wpforms.com/wp-content/uploads/2021/03/email-notification-post-submission.jpg) **投稿送信**アドオンにユーザープロファイルを作成させたいですか？ [投稿送信を使用してプロフィールフォームを作成する方法](https://wpforms.com/developers/how-to-build-an-profile-form-using-post-submissions/ "投稿送信を使用してプロフィールフォームを作成する方法")に関するチュートリアルをご覧ください。

**カテゴリ:** チュートリアル、通知

---</body></html>