Contact Form 7 完全ガイド|設置・タグ一覧・自動返信・迷惑メール対策まで


WordPressで最も人気のあるお問い合わせフォームプラグイン「Contact Form 7(CF7)」の使い方を完全解説します。固定ページへの設置方法からショートコードタグ一覧、お問い合わせ番号の自動生成、WP Mail SMTPでの迷惑メール対策まで、この記事1つでCF7のすべてがわかります。

この記事でわかること

  • Contact Form 7の基本と固定ページへの設置方法
  • フォームで使えるショートコードタグの一覧と使い方
  • お問い合わせ番号(日時ID)を自動生成する方法
  • WP Mail SMTPで自動返信メールが迷惑メールに入らない設定

Contact Form 7とは?

Contact Form 7は、WordPressで最も利用されているお問い合わせフォームプラグインです。HTMLやCSSの知識がなくても直感的にフォームを作成でき、ショートコードタグを活用することで柔軟なカスタマイズが可能です。無料で利用でき、日本語にも対応しています。


固定ページへのContact Form 7設置方法

WordPressのオリジナルテーマで固定ページにCF7フォームを設置する手順を解説します。

手順1:固定ページ用テンプレートの作成

テーマディレクトリ内に template-contact.php を作成し、以下のコードを記述します。

// template-contact.php
// Template Name: Contact

get_header();

// CF7ショートコードのIDは自分のフォームIDに変更
$shortcode = '[contact-form-7 id="1234567" title="コンタクトフォーム"]';
$html  = '<main><div class="contact-bg">';
$html .= apply_filters('the_content', $shortcode);
$html .= '</div></main>';
print($html);

get_footer();

コードのポイント

  • Template Name: Contact … 固定ページ編集画面でこのテンプレートを選択できるようになります
  • get_header() / get_footer() … ヘッダーとフッターの共通部分を読み込みます
  • apply_filters(‘the_content’, …) … ショートコードを解析してフォームのHTMLを生成します

ショートコード内の id は、CF7の設定画面で確認できる自分のフォームIDに変更してください。

手順2:固定ページの作成と公開

  1. WordPress管理画面で 固定ページ → 新規追加 に移動します
  2. ページタイトルを「お問い合わせ」と入力します
  3. 右側のテンプレートセクションで「Contact」を選択します
  4. ページを公開します

apply_filters() の補足

apply_filters() はWordPressのフィルターフックに登録されたコールバック関数を実行し、加工された値を返す関数です。the_content フィルターを通すことで、ショートコードの解析やoEmbed変換などWordPressの標準処理が適用されます。

// フィルターフックの基本例
$content = apply_filters('the_content', $original_content);

// コールバック関数の登録例
function add_custom_text_to_content($content) {
    return $content . '<p>カスタムテキストが追加されました。</p>';
}
add_filter('the_content', 'add_custom_text_to_content');

Contact Form 7 タグ一覧と使い方

CF7ではショートコードタグを使ってフォームのフィールドを定義します。以下が主要なタグの一覧です。

[text]:テキスト入力

名前などのシンプルなテキスト入力フィールドを作成します。

[text your-name]

// 必須項目にする場合
[text* your-name]

[email]:メールアドレス入力

メールアドレス専用の入力フィールドを作成します。

[email your-email]

// プレースホルダーを追加する場合
[email your-email placeholder "例: example@example.com"]

[textarea]:複数行の入力

お問い合わせ内容など、複数行のテキスト入力が可能なフィールドです。

[textarea your-message]

[select]:選択ボックス

ドロップダウン形式の選択ボックスを作成します。

[select your-option "オプション1" "オプション2"]

[checkbox]:チェックボックス

複数選択可能なチェックボックスを作成します。

[checkbox your-consent "同意する"]

[radio]:ラジオボタン

1つだけ選択可能なラジオボタンを作成します。

[radio your-choice "選択肢1" "選択肢2"]

[submit]:送信ボタン

フォームの送信ボタンを作成します。

[submit "送信"]

必須オプションの設定

すべてのタグにアスタリスク(*)を付けると必須項目になります。必須タグを使う場合は、ラベル横に「必須」と表示するなど、UIでも明示しましょう。

[text* your-name placeholder "名前を入力してください"]

フォーム作成のベストプラクティス

  • ラベルの関連付けlabel タグと for 属性でフィールドとの対応を明確にする
  • 自動補完の活用autocomplete="name"autocomplete="email" を指定して入力効率を向上させる
  • セマンティックな構造fieldsetlegend でグループ化してユーザー体験を向上
  • 二重バリデーション:CF7のクライアントバリデーションに加え、サーバー側でも入力チェックを行う

お問い合わせ番号を自動生成する方法

CF7で送信ごとに「秒までの日時」を自動採番してメールに付与する方法を解説します。連番管理が不要で、実装がシンプルなのがメリットです。

なぜ「秒までの日時」を付与するのか?

  • お問い合わせ番号を一意にしたい:日時ベースなので衝突が起きにくい
  • 連番の管理が不要:00001 → 00002 のように+1する必要がない
  • 実装がシンプル:日時を出すだけなので functions.php に数行追記するだけ

方法1:ショートコード版

functions.php に以下を追記します。

// CF7で送信時の日時(YYYYMMDDHHMMSS)を返すショートコード
function cq_cf7_datetime_code() {
    // WordPressのタイムゾーン設定に従って出力
    return date_i18n('YmdHis');
}
add_shortcode('serial_datetime', 'cq_cf7_datetime_code');

CF7メールテンプレートでの使い方:

お問い合わせ番号: [serial_datetime]

出力例:20250901192345

方法2:特殊メールタグ版([_datetime14])

CF7の「特殊メールタグ」として実装する方法です。

// 特殊メールタグ: [_datetime14] → YYYYMMDDHHMMSS
add_filter('wpcf7_special_mail_tags', function ($output, $name) {
    // wpcf7. プレフィックスを除去
    if (strpos($name, 'wpcf7.') === 0) {
        $name = substr($name, 6);
    }
    if ($name === '_datetime14') {
        return date_i18n('YmdHis');
    }
    return $output;
}, 10, 2);

メールテンプレートでの書き方:

お問い合わせ番号: [_datetime14]

カスタマイズ例

フォーマットの変更や接頭辞の追加も簡単です。

// スラッシュ区切りの日時形式
date_i18n('Y/m/d H:i:s');
// 出力例: 2025/09/01 19:23:45

// 接頭辞・接尾辞を追加
'CQ-' . date_i18n('YmdHis') . '-JP';
// 出力例: CQ-20250901192345-JP

一意性をさらに高める方法

同じ秒に複数件送信される可能性がある場合は、以下の方法で一意性を強化できます。

  • date_i18n('YmdHis') . '-' . uniqid() で一意なIDを追加
  • microtime(true) でミリ秒精度の出力
  • wp_generate_uuid4() と組み合わせてUUID形式にする

応用:管理画面との連携

  • 「お問い合わせ一覧」に日時IDカラムを追加
  • 送信時の日時IDをカスタムフィールドに保存して検索可能に
  • Flamingoプラグインのメッセージに日時IDを一緒に保存

自動返信メールの迷惑メール対策(WP Mail SMTP)

CF7の自動返信メールが迷惑メールに入ってしまう主な原因は、送信元アドレスの不一致やメール配信方式の不安定さにあります。WP Mail SMTPで「送信元を自社ドメインで固定+SMTP配送」を設定すれば、多くのケースで改善できます。

手順1:WP Mail SMTPの導入と基本設定

  1. 「WP Mail SMTP」をインストールして有効化
  2. 一般設定でFrom Emailを設定:
    • From Email:no-reply@あなたのドメイン(必ず独自ドメイン)
    • Force From Email:チェックを入れる
    • From Name:サイト名や会社名
  3. Mailer(送信方式)を設定:
    • Other SMTPを選択
    • SMTP Host:smtp.yourdomain.com
    • Encryption:TLS
    • SMTP Port:587(TLSの場合)/ 465(SSLの場合)
    • Authentication:ON
    • SMTP Username / Password:メールアカウントの情報
  4. 「Email Test」で自分のGmailなどに送信し、受信トレイに届くか確認

Fromは必ず独自ドメインのアドレスを使用してください。Gmail等のフリーメールをFromに使うと高確率で迷惑メール判定されます。

手順2:CF7メールテンプレートの正しい設定

管理者宛メール(Mail)の設定:

項目設定値
Toinfo@yourdomain
Fromno-reply@yourdomain
Subject[your-subject]
Additional HeadersReply-To: [your-email]

自動返信メール(Mail (2))の設定:

項目設定値
To[your-email]
Fromno-reply@yourdomain
Subject【自動返信】お問い合わせありがとうございます
Additional HeadersReply-To: info@yourdomain

Fromにユーザーのメールアドレスは絶対に入れないでください。返信したい場合は Reply-To を使います。

自動返信メールの本文テンプレート例

[your-name] 様

この度はお問い合わせありがとうございます。
以下の内容で承りました。担当より折り返しご連絡いたします。

ーーーーーーーーーーーーーー
お名前: [your-name]
メール: [your-email]
件名: [your-subject]

メッセージ:
[your-message]
ーーーーーーーーーーーーーー

※本メールは送信専用です。

よくあるNG設定と回避策

  • NG:Fromにユーザーのメールを入れる → 必ず自社ドメインのFromに固定し、返信はReply-Toで
  • NG:フリーメールドメインをFromに使う → 独自ドメイン必須
  • NG:追加ヘッダーを盛りすぎる → Reply-To以外は基本不要
  • NG:HTMLメールを凝りすぎる → まずはプレーンテキストで安定化

迷惑メール判定を防ぐ文面のポイント

  • 件名は短く具体的に(例:【自動返信】お問い合わせありがとうございます)
  • 本文先頭に相手の名前と受領の明記
  • URLは最小限(自社サイト1つ程度)
  • 署名に実在性の高い情報(屋号・サイトURL)を記載
  • 過度な煽り/販促ワードや絵文字の乱用は避ける

さらに配信品質を高めるには

WP Mail SMTPの設定だけで多くのケースは改善できますが、さらに確実にするなら以下の対策も検討してください。

  • DNSレコードでSPF / DKIM / DMARCを設定
  • SendGridやAmazon SESなどの専用送信サービスの導入

よくある質問(FAQ)

Q. Contact Form 7の必須入力はどうやって設定しますか?

タグの直後にアスタリスク(*)を付けることで必須項目になります。例:[text* your-name]

Q. 日時ベースのお問い合わせ番号は日本時間で出力されますか?

date_i18n() を利用しているため、WordPressの「一般設定 → タイムゾーン」に従って出力されます。日本時間に設定していれば日本時間で出力されます。

Q. 同じ秒に複数件送信されたらどうなりますか?

同じ値になる可能性があります。より厳密に一意性を確保したい場合は、uniqid() を追加する方法がおすすめです。

Q. お問い合わせ番号を件名にも利用できますか?

利用可能です。件名欄に お問い合わせ番号: [_datetime14] と書けばOKです。

Q. 自動返信メールが迷惑フォルダに入ってしまいます。

WP Mail SMTPでFromアドレスを独自ドメインに固定し、SMTP配信に切り替えてください。Fromにフリーメールやユーザーのメールアドレスを使っている場合は特に迷惑判定されやすくなります。

Q. スパム防止はどうすればいいですか?

reCAPTCHAの導入や承認チェックボックス(acceptanceタグ)を組み合わせるのがおすすめです。

Q. プレースホルダーとラベルはどちらを使うべきですか?

ラベルは必須です。プレースホルダーは補助的な説明として使いましょう。ラベルなしでプレースホルダーだけにすると、入力中にラベルが消えてしまいアクセシビリティが低下します。


まとめ

Contact Form 7は、WordPressでお問い合わせフォームを作成するための定番プラグインです。本記事で解説した内容をおさらいします。

  • 固定ページへの設置:テンプレートファイルを作成し、apply_filters() でショートコードを実行
  • タグ一覧:text / email / textarea / select / checkbox / radio / submit の基本タグをマスター
  • お問い合わせ番号の自動生成:ショートコード版または特殊メールタグ版で日時IDを付与
  • 迷惑メール対策:WP Mail SMTPで独自ドメインのFrom固定+SMTP配送が基本

これらの設定を組み合わせることで、信頼性の高いお問い合わせフォームを構築できます。

関連リンク:
Contact Form 7公式サイト