[WP]WordPressでお問い合わせフォームへ値を引き継ぐ方法
2016年7月13日
WordPressでお問い合わせフォームを使用する場合、何のページからのお問い合わせか自動で入って欲しい、とか、セレクトボタンで選んだ項目をフォームにも表示させて欲しいと要望があったので、調べてみた。
また悩むのも嫌なので、覚え書き。検証はContact form7でしてみました。
「記事タイトル」をフォームに表示させる方法
「/wp-content/plugins/contact-form-7/includes/」にある、functions.phpを編集。
一番下にでも、下記を追加。
function my_form_tag_filter($tag){
if ( ! is_array( $tag ) )
return $tag;
if(isset($_GET['好きな値'])){
$name = $tag['name'];
if($name == '好きな値')
$tag['values'] = (array) $_GET['好きな値'];
}
return $tag;
}
add_filter('wpcf7_form_tag', 'my_form_tag_filter', 11);
あとは「/themes/」内の該当PHPにお問い合わせフォームへのリンクを挿入。
(/contact/がリンク先で、好きな値をtitleにした場合)
<form action="<?php echo home_url(); ?>/contact/" method="post">
<input type="hidden" name="title" value="<?php the_title(); ?>">
<input type="submit" value="お問い合わせはこちら">
</form>
「セレクトボタン」で選択した値をフォームに表示させる方法
「/wp-content/plugins/contact-form-7/includes/」にある、functions.phpを編集。
一番下にでも、下記を追加。
function my_form_tag_filter($tag){
if ( ! is_array( $tag ) )
return $tag;v
if(isset($_POST['好きな値1'])){
$name = $tag['name'];
if($name == '好きな値1')
$tag['values'] = (array) $_POST['好きな値1'];
}
if(isset($_POST['好きな値2'])){
$name = $tag['name'];
if($name == '好きな値2')
$tag['values'] = (array) $_POST['好きな値2'];
}
return $tag;
}
add_filter('wpcf7_form_tag', 'my_form_tag_filter');
あとは「/themes/」内の該当PHPにセレクトボタンを挿入。
<form action="/intopetwp/sample-page/" method="post">
<select name="好きな値">
<option value="うどん">うどん</option>
<option value="そば">そば</option>
<option value="ラーメン" selected>ラーメン</option>
</select>
<select name="好きな値2">
<option value="うどん2">うどん2</option>
<option value="そば2">そば2</option>
<option value="ラーメン2" selected>ラーメン2</option>
</select>
<input type="submit" value="フォームへ">
</form>
フォームに値を表示させてメールにも記載させる。
WordPress設定画面から、対象のお問い合わせフォームを開いて、「フォームタブ」に追記。
[text 設定した値](複数あれば、複数記載)
「メールタブ」にも追記
[設定した値](複数あれば、複数記載)
これでいける・・・はず。
Contact Form 7でテキストボックスになっちゃうのが嫌だーって場合
下記classを追記するとテキストボックスのボーダーが取れるらしい。
[text 設定した値 class:readonly readonly]
私が試してみたら、うすーく線が残ってしまったけれど選択自体できなくなったのでOKです。
もう少しいじれば完璧になるかと。
下記記事を参考に検証させていただきました!ありがとうございました!!
http://www.fumufumu.info/wp/958/
http://www.doya-doya.com/diary/2010/10/04/2806