wordpressの大人気のプラグインの一つ「Contactform7」 このプラグインで変数を使えるようにするメモです。
例えば商店街のお店紹介サイトを作るとして、各お店のお問合せフォームを Contactform7で作るとします。 ContactForm7はコンタクトフォームをいくつも作れるので、商店街のお店が5つくらいならそのまま各お店用にフォームを作ったほうが早いかも。
紹介するお店が20件とかになってくると、もう管理が大変になってきます。 そういう場合に変数を用意すると管理が楽になります。
ただし、これは各お店が共通の項目を使っている場合です。
例えば「名前」と「メールアドレス」だけなど。 50店舗すべて違う内容の問い合わせ内容、項目を使う場合はやはり50個作ることになると思います。
Contactform7に変数をもたせる手順
(※今回はContactform7をカスタマイズする内容なので、すでにインストールと有効化が終わっている状態からスタートします)
ContactFormのカスタマイズと書いてありますが、今回プラグインのファイルは編集しません。カスタマイズするのはテーマのphpのみなので、プラグインがアップデートしても大丈夫です。
1.フォームの作成 まずは共通のフォームを作ります。
お問合せ店舗 [text* store_name] お名前 (必須) [text* your-name] メールアドレス (必須) [email* your-email] [submit "問い合わせする"]
今回は
お問合せ店舗「store_name」
名前「your-name」
メールアドレス「your-mail」
この3つのフォームを作ります。
今回の最終目標は一番上の問い合わせ項目「お問合せ店舗」に自動的にお店の名前が入るようにすることです。
2.フォームを表示する固定ページの作成
手順1で作ったフォームを表示するページを作成します。
作ったページに
[contact-form-7 id="" title="作ったフォームのショートコード]
を貼り付けて公開。
テンプレートから出力させる場合は
で大丈夫です。
これで作ったフォームがこのページに表示されます。
当然まだ項目にはテキストが入っていません。
3.テーマのfunction.phpにコードを追加する
テーマのfunction.phpに次のコードを追加します。
function store_contact_addinfo($tag){ if ( ! is_array( $tag ) ) return $tag; if(isset($_POST['store_name'])){ $name = $tag['name']; if($name == 'store_name') $tag['values'] = (array) $_POST['store_name']; } return $tag; } add_filter('wpcf7_form_tag', 'store_contact_addinfo');
もし 1番で作ったフォームの「store_name」を変更している場合は、こちらのstore_nameも変更したものに合わせて変更してください。
4.各お店ページから作ったコンタクトページに行けるようにする。
<form action="作ったコンタクトページのURL" method="post"> <input type="hidden" name="store_name" value="<?php echo get_the_title( get_the_ID() ); ?>"> <button type="submit" name="action" value="send">メールで問い合わせ</button> </form>
ここのお問合せボタンを押すと、作ったコンタクトページに飛ぶようになり、 問い合わせ店舗の項目にお店の名前が入っているはずです。
ちなみにこれはお店の名前を記事のタイトルにしている場合の書き方なので、カスタムフィールドを使っている場合はそのフィールドを呼出してあげる必要があります。
以上。
contactform7に変数を挿入する手順でした!