お問い合わせフォームはひとつ(共通)にしておき、どのページからそのお問い合わせフォームが呼び出されたのを判別したいときがあります。

もちろん、フォームに【お問い合わせ分類】としてリストから選んでもらうなんて方法もありますが、あまりスマートじゃない (´・ω・`)

できれば、自動的に入ってくれれば良いのだけど…

Contact Form 7を使っていれば、そんなときに使えるフィルターが用意されていました。

wpcf7_form_tag

finction.phpに以下を追加

<?php
//Contact Form 7 URLパラメーター取得
function my_form_tag_filter($tag){
  if ( ! is_array( $tag ) )
  return $tag;
 
  if(isset($_GET['subject'])){
    $name = $tag['name'];
    if($name == 'contact-subject')
      $tag['values'] = (array) $_GET['subject'];
  }
 
  return $tag;
}
add_filter('wpcf7_form_tag', 'my_form_tag_filter');
?>

呼び出し側のリンクに

	
<a href="http://◯◯◯.com/contact/?subject=ほにゃほにゃ">お問い合わせ</a>

こうすると、subjectという名前をつけたフォームパーツ(一般的にはtextだと思いますが)に自動的に「ほにゃほにゃ」が挿入されます。

あとは、それを表示のみ(修正できない)ようにするのであれば

[text contact-subject id:contact-subject readonly]

と、フォームパーツのショートコードに『readonly』を付加してやれば良いし、ページのスラッグを取得して、自動的に挿入する文字列を挿入するなんて応用もできますね。

 

 

WPのさんや、かもメモさんのブログを参考にさせていただきました。

ありがとうございましたぁ (・o・)

【Contact Form 7】1個のフォームでどのページからの問合せか判別する方法 URLパラメーターの使い方