Advanced

8. 初期値・パラメータ連携

URL や別ページから値を渡したい

URL パラメータや別ページのフォームから渡した値を、SPWForm の各入力項目へ反映する方法をまとめています。

方法の選び方

方法使えるシチュエーション
GET + varsURL パラメータで渡せるから簡単実装。
POST + post_keyフォームから値を引き継ぎたい。URLに値が出ないのですっきり。
PHP 属性 + varsPHP で決めた固定値や変数を渡したい。

GET + vars でURL パラメータを渡す

vars 属性に {get:キー名} を書くと、URL パラメータの値を取り込めます。パラメータのキー名はHTMLに出ないため、フィールド名との対応を外部から推測されません。

固定ページなどSPWForm設置用ショートコード

[SPWForm_scode key="123" vars="inquiry_type={get:options_val}"]

SPWFormのフォーム内のショートコード

[spwf_select name="contact_type" options="estimate:見積依頼,document:資料請求,other:その他" value="{spwp:inquiry_type}"]

たとえば https://example.com/contact/?options_val=document のように開くと、document に対応する選択肢が初期選択されます。

複数のパラメータを使いたい場合は ,(カンマ)区切りで並べます。

[SPWForm_scode key="123" vars="name_set={get:name_val},kana_set={get:kana_val}"]
[spwf_input name="your_name" value="{spwp:name_set}"]
[spwf_input name="your_kana" value="{spwp:kana_set}"]

WordPress の予約済み変数に注意

WordPress が内部で使っているクエリ変数名は URL パラメータとして使えません。WordPress がページ解釈に使うため、フォームへ届く前に消費されてしまいます。全部で40以上あります。よくぶつかりやすいものを挙げると:

name p s page paged cat tag author feed order orderby year day embed preview

name_val fullname contact_name のように、単語を組み合わせた名前にすれば安全です。完全なリストは WordPress Developer Reference(WP::$public_query_vars) で確認できます。

POST で別ページから渡す

同じ WordPress サイト内の別ページにフォームを置き、method="post" で飛ばす方法です。URL に値が出ないため、長いテキストや見せたくない値の受け渡しに向いています。

POST による自動入力を有効にするには、受け取り側のショートコードに post_key を設定します。post_key を知らない第三者からの POST は無視されます。同一ドメイン内からの POST のみ有効です。

受け取り側の設定(フォームページ)

post_key に任意の秘密キーを設定します。この値はHTMLには出力されません。

固定ページなどSPWForm設置用ショートコード

[SPWForm_scode key="123" post_key="mysecret123"]

post_key は実際は mysecret123 のような単純な値は使わず、推測されにくい文字列を設定してください。

SPWFormのフォーム内のショートコード

[spwf_input name="fullname"]
[spwf_textarea name="content"]
[spwf_radio name="radio01" options="星5つ:星5つ,星4つ:星4つ,星3つ:星3つ"]
[spwf_checkbox name="check01" options="会社員:1,フリーランス:2,主婦:3,学生:4,無職:5"]

送り出し側の設定(/shop/ などのページ)

署名を生成して hidden に含めます。フィールドの name はフォーム側の name 属性と合わせます。チェックボックスの複数選択は name[] で複数送ります。

<?php
$post_key  = 'mysecret123'; // 受け取り側の post_key と同じ値を入れます。
$signature = hash_hmac('sha256', date('Y-m-d'), $post_key);
//この2行と下のphpのあるhidden要素が認証に必要です。
?>
<form method="post" action="https://example.com/contact/">
  <input type="hidden" name="spwf_prefill_sig" value="<?php echo $signature; ?>">
  <input type="hidden" name="fullname" value="田中 太郎">
  <input type="hidden" name="content" value="商品についてお聞きしたいことがあります。">
  <input type="hidden" name="radio01" value="星4つ">
  <input type="hidden" name="check01[]" value="3">
  <input type="hidden" name="check01[]" value="5">
  <button type="submit">お問い合わせページへ</button>
</form>

POST 受け取り時の動作

  • post_key 未設定 → POST による自動入力は無効。空のフォームを表示。
  • post_key 設定あり + 署名一致 → フィールドに初期値をセットして表示。
  • post_key 設定あり + 署名不一致 → POST データを破棄して空のフォームを表示。

PHP 側から値を渡す

PHP で do_shortcode() を使って呼び出す場合は、vars に直接値を書くのがシンプルです。

$campaign_slug = 'spring_sale';
echo do_shortcode('[SPWForm_scode key="123" vars="campaign_name_vars=' . $campaign_slug . '"]');

受け取った値は hidden 項目へ反映できます。

[spwf_hidden name="campaign_name" value="{spwp:campaign_name_vars}"]

複数の値を使いたい場合は ,(カンマ)区切りで並べます。

ページエディタで直書きする場合 — {attr:キー名}

WordPress のページ編集画面でショートコードを直書きする場合は、[SPWForm_scode] 自身の属性を {attr:キー名} で参照できます。同じフォーム(同じ key)を複数ページに置いて、ページごとに値を変えたいときに使えます。

たとえばラジオボタンの初期選択値をページごとに変える場合、フォーム定義(管理画面)側は共通のまま:

[spwf_radio name="product" options="商品A:商品A,商品B:商品B,商品C:商品C" value="{spwp:product_set}"]

各ページのショートコードで値だけ差し替えます。

固定ページA

[SPWForm_scode key="123" product="商品A" vars="product_set={attr:product}"]

固定ページB

[SPWForm_scode key="123" product="商品B" vars="product_set={attr:product}"]

初期値を設定しやすいショートコード

  • text: テキストを最初から入れておきたいとき。
  • hidden: 画面に見せず値だけ送りたいとき。
  • radio: 1つの選択肢を最初から選んでおきたいとき。
  • checkbox: 初期チェックを付けたいとき。
  • select: 選択肢を最初から選んでおきたいとき。

radio checkbox select は、valueoptions の値を一致させる必要があります。

使い方の例

問い合わせ種別を最初から選んでおく

LP や導線ごとに問い合わせ種別を出し分けたい場合は、URL パラメータから select へ反映する使い方が向いています。

キャンペーン名を hidden で送る

PHP 側で決めた値を hidden へ渡しておくと、メール本文や保存データで後から確認しやすくなります。

別ページから顧客情報を引き継ぐ

商品ページや会員ページから POST でフォームページへ飛ばすことで、ユーザーに入力の手間をかけずに情報を引き継げます。post_key による照合があるため、外部からの不正な POST は無視されます。

ログインユーザー情報を初期値へ使う

{user:user_email}{meta:first_name} のような参照も使えます。必要な場面だけ使うと整理しやすくなります。

注意点

  • value に入れる値は、options 側の値と一致している必要があります。
  • checkbox の複数初期値はカンマ区切りで扱います。POST で渡す場合は name="fieldname[]" で複数送ります。
  • URL パラメータが無い場合、対応する値は空になります。
  • URL パラメータのキー名に name page s など WordPress の予約済み変数は使えません。
  • POST による自動入力は post_key の設定がない場合は無効です。デフォルトで無効になっています。
  • POST による自動入力は同一ドメイン内からのみ有効です。別ドメインからの POST は無視されます。