プラグインを使わずにContact Form 7 から送信されたメールの履歴を保存する ( カスタム投稿 )

概要説明

お問い合わせの履歴をプラグインを使わずに保存できるようにするためのカスタマイズ。カスタム投稿を事前に用意する必要があります。お問い合わせの履歴としての使い方だけでなく、ユーザー投稿型の機能もこちらのカスタマイズで簡単に実装が行えます。

カスタム投稿記事としてメールを保存

functions.php
/*----------------------------------------------------
 Contact Form 7 から送信された情報をカスタム投稿に保存させる
----------------------------------------------------*/
if ( !function_exists( 'wpcf7_send_add_post' ) ){
    function wpcf7_send_add_post(){
        // 送信情報を取得
        $submission = WPCF7_Submission::get_instance();
        if($submission) {
            $formdata = $submission->get_posted_data();

            // 特定のフォームの場合のみとしたい場合はidを使用
            $formid = $submission->get_contact_form()->id();

            // 管理画面からフォームの編集画面を表示させ url のpost=55 の部分を指定
            if ( $formid == 55 ) ) {

                // 例) 本文とメールアドレスを記事本文に設定
                $post_content = $formdata['your-message'] . "\n" . $formdata['your-email'];

                // 投稿を作成
                $insert_post = array(
                    'post_type'    => 'mail_history',             // メール履歴用のカスタム投稿を事前に用意
                    'post_title'   => $formdata['your-subject'],  // 記事タイトル
                    'post_content' => $post_content,              // 本文
                    'post_status'  => 'draft'                     // 下書き保存
                );
                wp_insert_post($insert_post);
            }
        }
    }
    add_action('wpcf7_mail_sent', 'wpcf7_send_add_post');
}

/wp-admin/admin.php?page=wpcf7&post=55&action=edit

特定のフォームのみという制限を加える場合は管理画面のフォーム編集画面を表示させ、URL内に含まれるパラメーターを確認します

実装後フォームから送信を行い動作確認

正常に動作していると上記のように管理画面のカスタム投稿一覧画面にフォームからの送信内容が表示されるようになります

こちらの機能を使って投稿機能を実装

メールの送信履歴保存で使うのも便利ですが、ユーザー投稿型のコンテンツサイトにも使えます。

Contact Form 7 を使ってユーザーからの投稿を記事として表示させるような機能を簡単に作ることができます。

WordPress Developer Resources

関連機能

  1. WordPressページの右クリックと画像のコピー操作を禁止させる

  2. WordPress キャッシュが有効でもPVカウントができる処理をAjaxを使用して実装 ( WP Super Cache )

  3. ダッシュボードに自由に使えるメモ用エリアを追加

サイドバー

よく使うカスタマイズ

最近の記事

アニメの名言集

人はどうでもいいことに命を懸けない。

葬送のフリーレン
by ヒンメル

Profile

PAGE TOP
Amazon プライム対象