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:固定ページの作成と公開
- WordPress管理画面で 固定ページ → 新規追加 に移動します
- ページタイトルを「お問い合わせ」と入力します
- 右側のテンプレートセクションで「Contact」を選択します
- ページを公開します
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"を指定して入力効率を向上させる - セマンティックな構造:
fieldsetやlegendでグループ化してユーザー体験を向上 - 二重バリデーション: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の導入と基本設定
- 「WP Mail SMTP」をインストールして有効化
- 一般設定でFrom Emailを設定:
- From Email:
no-reply@あなたのドメイン(必ず独自ドメイン) - Force From Email:チェックを入れる
- From Name:サイト名や会社名
- From Email:
- Mailer(送信方式)を設定:
- Other SMTPを選択
- SMTP Host:
smtp.yourdomain.com - Encryption:TLS
- SMTP Port:587(TLSの場合)/ 465(SSLの場合)
- Authentication:ON
- SMTP Username / Password:メールアカウントの情報
- 「Email Test」で自分のGmailなどに送信し、受信トレイに届くか確認
Fromは必ず独自ドメインのアドレスを使用してください。Gmail等のフリーメールをFromに使うと高確率で迷惑メール判定されます。
手順2:CF7メールテンプレートの正しい設定
管理者宛メール(Mail)の設定:
| 項目 | 設定値 |
|---|---|
| To | info@yourdomain |
| From | no-reply@yourdomain |
| Subject | [your-subject] |
| Additional Headers | Reply-To: [your-email] |
自動返信メール(Mail (2))の設定:
| 項目 | 設定値 |
|---|---|
| To | [your-email] |
| From | no-reply@yourdomain |
| Subject | 【自動返信】お問い合わせありがとうございます |
| Additional Headers | Reply-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公式サイト
