MW WP Formでフォームを自動入力させる方法を、2パターンご紹介したいと思います。
MW WP Formでは、GETパラメータを使ってフォームを自動入力することができます。この方法を使えば、お問い合わせフォームへの遷移元ページの情報を自動入力することができ、手入力による手間やミスを省くことができます。
MW WP FormでGETパラメータを使ってフォームを自動入力する方法
投稿IDから投稿情報を自動入力する方法
まずは、投稿IDから投稿情報を取得して、フォームに自動入力する方法です。
MW WP Formのフォーム作成画面で、「URL引数を有効にする」にチェックを入れます。
フォーム側では、valueに自動入力したい情報を指定します。以下の場合、パラメータで指定した投稿IDのタイトルが自動入力されます。
[mwform_text name="sample" size="60" value="{post_title}"]
valueの値には、$postに入っている情報であれば取得可能なので下記が指定できます。また、カスタムフィールドの値を自動入力したい場合は、フィールド名を指定します。例えばsizeというフィールド名の値を自動入力したい場合は{size}。
- {ID}
- {post_title}
- {post_author}
- {post_date}
- {post_date_gmt}
- {post_content}
- {post_excerpt}
- {post_status}
- {comment_status}
- {ping_status}
- {post_password}
- {post_name}
- {to_ping}
- {pinged}
- {post_modified}
- {post_modified_gmt}
- {post_content_filtered}
- {post_parent}
- {guid}
- {menu_order}
- {post_type}
- {post_mime_type}
- {comment_count}
- {filter}
あとは、お問い合わせページのURLに「?post_id=【投稿ID】」というパラメータを追加してあげれば、指定した投稿IDの情報が自動入力されます。「/contact/?post_id=23」のようにすれば、投稿IDが23の情報が取得されます。
例えば、遷移元ページの投稿IDを入れたい場合は、お問い合わせへのリンクを以下のように記述します。
<a href="<?php echo esc_url( home_url('/contact/') ); ?>?post_id=<?php echo get_the_ID(); ?>">お問い合わせ</a>
独自の情報を自動入力する方法
上述した方法では取得できない情報を自動入力したい場合は、「mwform_value_mw-wp-form-xxx」というフックを使うことで実現可能です。
まずは、上述した方法と同じように、MW WP Formのフォーム作成画面で「URL引数を有効にする」にチェックを入れます。
フォーム側ではvalueは指定しません。こちらの方法では、valueを指定するとうまく動かないので注意が必要です。
[mwform_text name="sample" size="60"]
続いて、適用しているテーマのfunctions.phpで自動入力したい情報を指定します。例えば、name属性が”sample”のテキストボックスに、”hoge”というパラメータの値を入力したい場合は、以下のように記述します。
function my_mwform_value($value, $name) {
if ($name === 'sample' && !empty($_GET['hoge']) && !is_array($_GET['hoge'])) {
return $_GET['hoge'];
}
return $value;
}
add_filter('mwform_value_mw-wp-form-xxx', 'my_mwform_value', 10, 2);
「mwform_value_mw-wp-form-xxx」のxxxの部分には、フォーム識別子のkeyを入れてください。フォーム識別子が[mwform_formkey key=”1234″]の場合は、「mwform_value_mw-wp-form-1234」になります。
あとは、お問い合わせページのURLに「?hoge=xxx」というパラメータを追加してあげれば、hogeパラメータの値がsampleに自動入力されます。
あとがき
前者でも十分活用できるケースはありそうですし、後者の場合はかなり柔軟な対応ができそうですね。
フォームを自動入力したい時は、ぜひ参考にしていただければと思います。