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

広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

概要説明

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

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

functions.php
/*----------------------------------------------------
 Contact Form 7 から送信された情報をカスタム投稿に保存させる
----------------------------------------------------*/
if ( ! function_exists( 'wpcf7_send_add_post' ) ) {
    function wpcf7_send_add_post( $contact_form ) {
        // 特定のフォームの場合のみとしたい場合は id を使用
        // 管理画面からフォームの編集画面を表示させ url の post=55 の部分を指定
        if ( 55 !== (int) $contact_form->id() ) {
            return;
        }

        // 送信情報を取得
        $submission = WPCF7_Submission::get_instance();
        if ( ! $submission ) {
            return;
        }
        $formdata = $submission->get_posted_data();

        // 例) 本文とメールアドレスを記事本文に設定(ない欄は空にする)
        $message = isset( $formdata['your-message'] ) ? $formdata['your-message'] : '';
        $email   = isset( $formdata['your-email'] ) ? $formdata['your-email'] : '';
        $subject = isset( $formdata['your-subject'] ) ? $formdata['your-subject'] : '(件名なし)';

        // 投稿を作成
        wp_insert_post( array(
            'post_type'    => 'mail_history',                     // メール履歴用のカスタム投稿を事前に用意
            'post_title'   => sanitize_text_field( $subject ),     // 記事タイトル
            'post_content' => sanitize_textarea_field( $message ) . "\n" . sanitize_email( $email ), // 本文
            'post_status'  => 'draft',                             // 下書き保存
        ) );
    }
    add_action( 'wpcf7_mail_sent', 'wpcf7_send_add_post' );
}

以前のコードは、if の行のかっこが 1 つ多く、functions.php に貼るとエラーで画面が真っ白になる状態でした。お詫びして直しました(2026/10/18)。あわせて、フォームの id の確かめを先にし、件名などの欄がないフォームでも警告が出ないようにしています。

お問い合わせの内容(メールアドレスなど)をサイトの中に残すことになるので、プライバシーポリシーにも「お問い合わせの内容を保存すること」を書いておきましょう。

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

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

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

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

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

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

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

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

WordPress Developer Resources

関連機能

  1. アイキャッチ画像の設定機能を追加したい場合

  2. ico形式のファイルをアップロードできるようにする

  3. 指定期間内に公開した記事タイトルに一括で新着表示をつける

サイドバー

よく使うカスタマイズ

最近の記事

Profile

PAGE TOP