WordPressのメールフォームでいつもお世話になっているMW WP Formさんです。
今回は、たまに使う機能「URL引数を有効にする」をご紹介します!
実装する形
- 商品が登録してある(投稿のタイトルが商品名)
- その商品ページの「この商品に関するお問合わせ」ボタンからお問合わせページに遷移
- 自動でその商品の名前が入力フィールドに出現!(ここ感動するとこ)
商品詳細ページ(single.php)
お問合わせページへのリンクを以下のように設定します。
URLパラメータitemに投稿のIDを入れます!
<a href="<?php echo home_url(); ?>/contact/?item=<?php echo get_the_ID(); ?>">この商品に関するお問合わせ</a>
MW WP Formのフォームタグ
その部分だけ紹介するとこんなかんじ。
[mwform_text name="商品"]
functions.phpにフックを追加
mwform_value_mw-wp-form-xxxのxxxのところには、ご自分のフォームの識別子のkeyを入れてくださいね。
function my_mwform_value($value, $name) { if ($name === '商品' && !empty($_GET['item']) && !is_array($_GET['item'])) { $item_name = get_the_title($_GET['item']); return $item_name; } return $value; } add_filter( 'mwform_value_mw-wp-form-xxx', 'my_mwform_value', 10, 2 );
nameが”商品”であるフィールドに対し、URLパラメータitemが存在する場合はそのIDから投稿名を取得して、出力します。
参考
プラグイン制作者様のブログを参考にさせていただきました。
MW WP FormでURL引数をもとに動的にvalue値を設定する方法 – モンキーレンチ
2017.03.29追記
この記事を公開した直後、MW WP Formの作者 北島さんからこんなアドバイスをいただきました。
@narugaro 記事タイトルだけならfunctions.phpつかわなくてもできますよ! ?post_id= な URL にして、フィールドの value(初期値)に {post_title} といれるだけです。
— キタジマタカシ (@inc2734) 2017年3月23日
まじですか!!
<a href="<?php echo home_url(); ?>/contact/?post_id=<?php echo get_the_ID(); ?>">この商品に関するお問合わせ</a>
[mwform_text name="商品" value="{post_title}"]
商品詳細ページのリンクを?post_id=にして、フォームのvalueを設定したら、できました。
ありがとうございました。