WordPressのメールフォームでいつもお世話になっているMW WP Formさんです。
今回は、たまに使う機能「URL引数を有効にする」をご紹介します!
実装する形
- 商品が登録してある(投稿のタイトルが商品名)
- その商品ページの「この商品に関するお問合わせ」ボタンからお問合わせページに遷移
- 自動でその商品の名前が入力フィールドに出現!(ここ感動するとこ)
商品詳細ページ(single.php)
お問合わせページへのリンクを以下のように設定します。
URLパラメータitemに投稿のIDを入れます!
1 | <a href= "<?php echo home_url(); ?>/contact/?item=<?php echo get_the_ID(); ?>" >この商品に関するお問合わせ</a> |
MW WP Formのフォームタグ
その部分だけ紹介するとこんなかんじ。
1 | [mwform_text name="商品"] |
functions.phpにフックを追加
mwform_value_mw-wp-form-xxxのxxxのところには、ご自分のフォームの識別子のkeyを入れてくださいね。
1 2 3 4 5 6 7 8 | 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日
まじですか!!
1 | <a href= "<?php echo home_url(); ?>/contact/?post_id=<?php echo get_the_ID(); ?>" >この商品に関するお問合わせ</a> |
1 | [mwform_text name="商品" value="{post_title}"] |
商品詳細ページのリンクを?post_id=にして、フォームのvalueを設定したら、できました。
ありがとうございました。