Webサイトを運営していると、「特定のリンクから来たユーザーには、フォームの入力欄にあらかじめ値を入れておきたい」という場面があります。
例えば、資料請求ページから来た人には「資料請求」と初期表示したい、キャンペーンページから来た人には「キャンペーン応募」と表示したい、といったケースです。
こうしたときに便利なのが URLパラメータを使った初期値の設定 です。
Contact Form 7(WordPress)やメールフォームプロ(CGIフォーム)では、URLパラメータを読み取ってフォームの入力欄に反映させることができます。
- URLパラメータの基本的な書き方
- Contact Form 7での設定方法
- メールフォームプロでの設定方法
- 注意点と応用例
URLパラメータとは?
URLパラメータとは、WebページのURLの末尾に「?(クエスチョンマーク)」や「&(アンパサンド)」を使って追加する情報のことです。
Webサイトにアクセスする際に、リンク元やユーザーの選択内容をページに渡すためによく使われます。
URLパラメータの例
https://example.com/form?type=campaign
上記の例では、?type=campaign
がパラメータ部分になります。
type
が パラメータ名campaign
が パラメータの値
という関係です。
複数のパラメータを渡したい場合は &
でつなげます。
https://example.com/form?type=campaign&name=test
この場合、
type=campaign
name=test
という2つの情報がURLに含まれています。
フォームでの利用イメージ
URLパラメータをフォームと組み合わせることで、リンクごとにフォームの初期値を変えることが可能です。
たとえば:
- 資料請求ページ →
?subject=資料請求
- お問い合わせページ →
?subject=お問い合わせ
と設定しておけば、同じフォームでもリンク元によって自動的に初期値が切り替わります。
Contact Form 7でURLパラメータを使って初期値を設定する方法
Contact Form 7(CF7)では、フォームタグに default:get
を指定することで、URLパラメータを初期値として自動的に反映できます。
1. 基本の記述方法
例:問い合わせ種別をパラメータから受け取る場合
[select* your-subject default:get "資料請求" "お問い合わせ" "その他"]
default:get subject
→ URLの ?your-subject=
(name値)に指定された値を初期値にします。
2.リンクURL例
https://example.com/contact?your-subject=資料請求
このURLからフォームを開くと、プルダウンの初期値が「資料請求」にセットされます。
テキストフィールドやボタンでも同様に反映されます。
複数フィールドの場合
https://example.com/contact?your-subject=資料請求&book=ガイドブック
複数のパラメータを渡したい場合は &
でつなげます。
3.応用:隠しフィールドにパラメータを入れる
フォーム上には表示せず、送信内容だけに反映させたい場合は hidden フィールドを使います。
[hidden campaign-code default:get]
URL例:
https://example.com/contact?campaign-code=abc123
送信メールの本文には abc123
が反映されます。
4. 注意点
default:get
を使うと、パラメータが存在しないときは空欄のままになります。- 半角スペースや日本語を含む場合は、自動的にエンコードされます(例:
資料請求
→%E8%B3%87%E6%96%99%E8%AB%8B%E6%B1%82
)。リンク作成時はエンコードも意識しましょう。 - パラメータを多用するとURLが長くなるので、用途を整理して使うのがおすすめです。
メールフォームプロでURLパラメータを使う方法
実は メールフォームプロは標準で URL パラメータを初期値に反映できる仕組み が備わっているので、Contact Form 7 のようにフォーム側でコードを書く必要はありません。
1. URLにパラメータを付与する
まず、フォームを呼び出すリンクにパラメータを追加します。
例:
https://example.com/mailformpro/?campaign=summer2025
2. 自動的に入力欄に反映される
メールフォームプロの場合、フォーム側で特別な設定をしなくても、
name="campaign"
のフィールドがあると- URL の
?campaign=summer2025
が自動的に初期値として反映されます。
3. 活用例
- 広告経由の違いを自動で記録する
- イベント名やセミナー名をあらかじめ入力済みにする
- サイト内の複数ページから同じフォームに飛ばして、どのページからの申込みかを記録する
4. 注意点
- パラメータ名は フォームの
name
属性と一致させる必要 があります。 - 日本語を使う場合は URL エンコードが必要です。
- ユーザーに見せたくない場合は hidden フィールドを用意すると便利です。
よくあるトラブルと解決法
1. パラメータが反映されない
- 原因:URLの書き方ミス(
?
や&
の位置が間違っている) - 解決法:
- 正しい書き方 →
?name=山田&email=test@example.com
- パラメータ名がフォームのname属性と一致しているか確認
- 正しい書き方 →
2. 日本語が文字化けする
- 原因:日本語を直接URLに入れるとエンコードされる
- 解決法:
URLエンコード(%E3%81%AA%E3%81%A9)
を利用する- 例)
?name=%E5%B1%B1%E7%94%B0
- 例)
3. 他のスクリプトやリダイレクトで消えてしまう
- 原因:リダイレクト処理でパラメータが引き継がれていない
- 解決法:
- リダイレクト時に
?param=value
を付けて引き継ぐ設定を行う - WordPressの場合、
wp_redirect
を使う際にadd_query_arg
で保持
- リダイレクト時に
セキュリティ面の注意点
URLパラメータは「ユーザーが自由に書き換えられる値」なので、注意が必要です。
- 改ざんリスク
- 悪意あるユーザーがパラメータを改ざんして不正な情報を送信する可能性あり
- 例)価格やプラン情報をパラメータで渡すのはNG
- 個人情報の取り扱い
email
や電話番号
などをURLに含めると、アクセスログや共有リンクに情報が残る- 個人情報は極力URLパラメータに含めないのが安全
- 対策
- サーバー側で入力値を検証(サニタイズ・バリデーション)する
- パラメータは便利な反面、利用範囲を限定する
まとめ|URLパラメータを使えばフォーム入力がスムーズに
URLパラメータを利用すれば、リンク元からフォームに初期値を自動入力できるため、ユーザーの手間を減らし、入力ミスの防止にもつながります。
Contact Form 7では短いコードの追加が必要ですが、メールフォームプロの場合はリンクにパラメータを付けるだけで反映されるなど、それぞれ特徴があります。
一方で、パラメータが反映されない・日本語が文字化けする・リダイレクトで消えてしまうといったトラブルもあるため、仕組みを理解した上で正しく実装することが大切です。また、URLパラメータは改ざん可能でログにも残るため、個人情報や重要なデータを扱う用途には注意が必要です。
正しく活用すれば、ユーザーにとっても管理者にとっても便利な仕組みになりますので、ぜひ自分のフォームに合わせて取り入れてみてください。
コメント