送信前の確認画面モーダル
クリック1回でユーザーに入力内容を見せられる。入力ミスや誤送信を減らし、サポートコストを下げる。
- 表形式で整然と表示
- 長文も縦スクロールで省略なし
- 狭い画面ではラベルと内容を縦並びに切替可能
Kakunin Modal for Contact Form 7 は、Contact Form 7(CF7)のフォームに送信前の確認画面(モーダル)を追加する、無料の WordPress プラグインです。
サーバー通信ゼロ。送信は CF7 公式 API をそのまま使用。
入力内容の確認
| 会社名 | 株式会社サンプル |
|---|---|
| ご担当者名 | 山田 太郎 |
| 部署・役職 | マーケティング部 課長 |
| 電話番号 | 03-1234-5678 |
| メールアドレス | t.yamada@example.co.jp |
| お問い合わせ種別 | お見積もり依頼 |
| ご予算規模 | 50万円〜100万円 |
| ご検討時期 | 1ヶ月以内 |
| お問い合わせ内容 | ECサイトのリニューアルを検討しております。 商品数は約300点で、現在は他社CMSで運用中です。 詳しくお話を伺いたく、ご連絡いたしました。 |
誤送信はサポートコストを増やし、フォームの信頼を下げる。
確認ステップを1枚挟むだけで、送信の精度とユーザーの安心が変わる。
クリック1回でユーザーに入力内容を見せられる。入力ミスや誤送信を減らし、サポートコストを下げる。
祖先要素に1行足すだけ。フォーム上の見た目と、モーダル上の文言を別々にコントロールできる。
必須項目が埋まるまで送信ボタンは無効。CF7 Conditional Fields の非表示グループも自動で除外。
1つのページに複数フォームを置いても、それぞれ独立して有効/無効・タイトル・色を切り替えられる。
wpcf7mailsent を捕まえ、相対パス・絶対URLの両方に対応。エラー時はリダイレクトせずエラーを表示。
プラグイン本体はサーバーと通信しない。送信や検証はすべてCF7本体に委ね、フロントだけで動作する。
Kakunin Modal for Contact Form 7 の主要画面のスクリーンショットを掲載しています。
クリックで拡大できます。


既存のContact Form 7のフォームに、特別な書き換えは不要。
プラグインを入れて有効化するだけで動く。
ダウンロードページから最新版のZIPを取得する。
WordPress 管理画面の「プラグイン → 新規追加 → プラグインのアップロード」からZIPをアップロードし、続けて「Kakunin Modal for Contact Form 7」を有効化する。Contact Form 7 本体が先に有効である必要がある。
「設定」→「Kakunin Modal for Contact Form 7」を開き、対象フォームのアコーディオンで「このフォームで確認画面モーダルを表示する」をON。
wpcf7_autop を切ることで、より正確なHTML構造が保たれラベル取得が安定する。
// Contact Form 7 の自動 <p> / <br> 挿入を無効化
add_filter( 'wpcf7_autop_or_not', '__return_false' );
管理画面の「設定 → Kakunin Modal for Contact Form 7」を開くと、 フォームごとにアコーディオンが並ぶ。
文言・色・リダイレクト先まで、すべてフォーム単体で設定できる。
同一ページに複数のフォームがあっても、それぞれ独立して動作する。
例:問い合わせフォームは確認画面モーダルON、 ニュースレターはOFF、といった使い分けが可能。
| 項目 | デフォルト値 |
|---|---|
|
確認画面モーダルの有効化
このフォームで確認画面モーダルを表示するか
|
デフォルト
OFF
|
|
未入力項目の表示
空欄の項目も確認画面モーダルに含めるか
|
デフォルト
OFF
|
|
未入力時の表示テキスト
未入力項目を表示する際のプレースホルダー
|
デフォルト
(未入力)
|
| 項目 | デフォルト値 |
|---|---|
|
モーダルタイトル
確認画面モーダルの上部に表示されるタイトル
|
デフォルト
入力内容の確認
|
|
戻るボタンのテキスト
モーダルを閉じてフォームに戻るためのボタン文言
|
デフォルト
戻る
|
|
送信ボタンのテキスト
モーダル内の最終送信ボタンの文言
|
デフォルト
送信する
|
| 項目 | デフォルト値 |
|---|---|
|
プライマリカラー
モーダル内の送信ボタンの背景色
|
デフォルト
#0d6efd
|
|
スマホ表示の縦並び
狭い画面で見出しと内容を縦並びに切り替える
|
デフォルト
ON
|
|
縦並びのブレイクポイント
縦並びに切り替える画面幅の上限(px)
|
デフォルト
576px
|
| 項目 | デフォルト値 |
|---|---|
|
リダイレクトURL
送信完了後に遷移するURL。空欄なら完了メッセージを表示
|
デフォルト
(空欄)
|
プラグインはdata-label→label[for]→親要素内のlabel→…の順でラベルを自動取得。
<table>
<tr data-label="お名前">
<th>
<label for="your-name">
お名前<span class="required">*</span>
</label>
</th>
<td>[text* your-name id:your-name]</td>
</tr>
</table>
祖先要素に data-label を付与する最優先パターン。フォーム上とモーダル上の文言を別々に制御できる。
<table>
<tr>
<th>
<label for="your-email">
メールアドレス<span data-label-required>必須</span>
</label>
</th>
<td>[email* your-email id:your-email]</td>
</tr>
</table>
label の for とフィールドの id を結ぶ、標準的なパターン。シンプルなテキストラベルに最適。
<div>
<label>電話番号<span data-label-required>必須</span></label>
[tel* your-phone]
</div>
div または p で label とフィールドを囲むスタイル。CF7の従来書式と相性が良い。
すべて任意の属性。指定しなくても自動推測で動作。
必要なところだけ書き、必要なときだけ細かく制御しましょう。
data-label
祖先要素に付与すると、その値がそのままモーダルのラベルになる。フォーム上の <label> はそのまま残してよく、モーダル側だけ別の文言にしたいときに使う。
<table>
<tr data-label="お名前">
<th>
<label for="your-name">
氏名(フルネーム)<span class="required">*</span>
</label>
</th>
<td>[text* your-name id:your-name]</td>
</tr>
</table>
data-label-suffix
モーダル側だけに必須バッジなどの装飾を加えたいときに使う。値は HTML として解釈される。エスケープされないので、ユーザー入力を渡してはいけない。
<tr
data-label="メールアドレス"
data-label-suffix='<span class="cf7-confirm-required">必須</span>'
>
<th>
<label for="your-email">
メールアドレス<span class="ml-1 text-red-500">※</span>
</label>
</th>
<td>[email* your-email id:your-email]</td>
</tr>
data-label-required
<label> 内の「必須」「*」などをラベルテキストから取り除きたいときに付ける。フォーム上の見た目には影響しない。span class="required" は後方互換で自動除外。
<th>
<label for="your-phone">
電話番号<span data-label-required>必須</span>
</label>
</th>
<td>[tel* your-phone id:your-phone]</td>
data-cf7-match
パスワード確認・メールアドレス再入力などで、対象フィールドと同じ値かを検証する。CF7 標準と同形式の wpcf7-not-valid-tip がフィールド直下に挿入される。一致するまで送信ボタンも非活性。
<tr>
<th><label for="email">メールアドレス</label></th>
<td>[email* email id:email]</td>
</tr>
<tr data-cf7-match="email">
<th><label for="email-confirm">メールアドレス(確認用)</label></th>
<td>[email* email-confirm id:email-confirm]</td>
</tr>
data-cf7-match-message
省略時は「入力内容が一致しません。」と表示される。フィールドごとに文言を変えたいときに併用する。
<tr
data-cf7-match="email"
data-cf7-match-message="メールアドレスが一致しません。"
>
<th><label for="email-confirm">メールアドレス(確認)</label></th>
<td>[email* email-confirm id:email-confirm]</td>
</tr>
送信処理は Contact Form 7 の公式APIに委譲する。
Ajax・サーバー側バリデーション・成功/失敗ハンドリングはすべてCF7のまま。
CF7のイベントよりも先にキャプチャフェーズで処理。必須フィールド・acceptanceの空チェック。
NGならCF7にそのまま送り、通常のエラーメッセージを表示。OKなら確認画面モーダルを開く。
表形式で入力内容を確認。改行や複数選択肢も整形して表示される。
wpcf7.submit(form) で公式API経由で送信。CF7のAjaxフローに完全に乗る。
成功 → リダイレクトまたは完了メッセージ。エラー(invalid / spam / mailfailed)→ モーダルを閉じてエラー表示。
いいえ。Contact Form 7 本体には送信前の確認画面(確認モーダル)機能は搭載されていません。確認画面を追加するには、本プラグインのようなアドオンを利用する必要があります。
本プラグインはモーダル(同一画面上のポップアップ)で表示します。ページ遷移を伴わないため、入力した内容を確認してそのまま送信できます。ブラウザ内で完結するため、確認画面の表示は瞬時です。
発生しません。確認モーダルの組み立てはすべてブラウザ内(Vanilla JS)で行います。実際の送信処理は Contact Form 7 公式の Ajax API に委譲するため、追加のサーバー負荷ゼロで導入できます。
本プラグインは確認画面をクライアントサイドで生成するため、サーバー負荷ゼロ・表示瞬時です。設定は管理画面の GUI から完結し、フォーム HTML の書き換えは原則不要。CF7 Conditional Fields との互換性、フォーム単位の有効化、jQuery 非依存(Vanilla JS / ES6+)も特徴です。
いいえ。標準的な書き方をしていれば、そのままで動作します。ラベルが意図したとおりに取れない場合のみ、祖先要素に data-label を1行追加するだけで解決します。
はい。バージョン0.5.0以降、querySelectorAll でフォームをすべて検出し、それぞれ独立したインスタンスを生成します。フォームごとに有効/無効を切り替えられます。
互換します。.wpcf7cf-hidden が付与された非表示グループ内のフィールドは、バリデーション・送信ボタン活性化・確認画面モーダル表示のいずれの対象からも自動で除外されます。MutationObserver でリアルタイムに監視するため、条件を切り替えると即座に反映されます。
マークを囲む要素に data-label-required 属性を付けてください。ラベル取得時に自動的に除外されます。後方互換のため class="required" を持つ span も自動除外されます。完全に独自の文言にしたい場合は、祖先要素の data-label で上書きするのが最も確実です。
いいえ。プラグインのフロントエンドはVanilla JS(ES6+)のみで構築されています。CF7本体以外の依存はありません。
BEM記法のクラス(.cf7-confirm-modal__header など)とCSS変数(--cf7-confirm-primary 等)が用意されています。テーマや子テーマで上書きしてください。プライマリカラーは管理画面のカラーピッカーから直接変更できます。
※ 相談と見積もりは無料です
※ 株式会社ノーブルウェブが対応します