不動産サイトやリクルートサイトでは、投稿やカスタム投稿で運用している物件情報ページや求人情報ページに共通のお問い合わせフォームを設置し、フォームが送信された際に「どのページから送信されたのか」が分かるよう把握したいケースがあります。
そんなとき、Contact Form 7の共通フォーム内にページタイトルを自動で反映する入力フィールドを用意しておくことで、どのページからの問い合わせかを正確に取得できます。
今回は、Contact Form 7でページタイトルをフォームに自動反映する方法を解説します。
Contact Form 7でページタイトルをフォームに自動反映する方法
Contact Form 7でページタイトルをフォームへ自動反映するには、以下の方法で実装します。
◾️ページタイトルをフォームに自動反映する方法
- テキストボックスの用意
- wpcf7_form_tagを使ってテキストボックスの値を変更する
1. テキストボックスの用意
まず、ページタイトルを格納するためのテキストボックスを用意します。
今回は [text seminar-title readonly] というテキストボックスにページタイトルが自動で反映されるようにしていきます。
なお、readonlyという属性が付いていますが、こちらを設定することで、自動反映されたページタイトルを後からユーザーが書き換えできないようにしています。
<label> セミナー名
[text seminar-title readonly]
</label>
<label> 氏名
[text* your-name autocomplete:name]
</label>
<label> フリガナ
[text* your-kana]
</label>
<label> メールアドレス
[email* your-email autocomplete:email]
</label>
<label> 電話番号(任意)
[tel your-tel autocomplete:tel]
</label>
<label> 参加人数
[number* number-of-people min:1 max:10]
</label>
<label> ご質問・ご要望(任意)
[textarea your-message]
</label>
[submit "送信"]
フォームには表示させず自動返信メールの中だけでページタイトルを利用したい場合は、[text seminar-title readonly]の代わりに[hidden seminar-title]と設定します。
そうすると、ユーザー側のフォームには表示されませんが、メール設定側では[seminar-title]を使ってページタイトルを利用できます。
<!-- <label> セミナー名
[text seminar-title readonly]
</label> -->
[hidden seminar-title]2. wpcf7_form_tagを使ってテキストボックスの値を変更する
続いて、設置したページタイトル用テキストボックスの値をフィルターフック「wpcf7_form_tag」を使って編集します。
wpcf7_form_tagにedit_seminar_title_form()関数をフックし、name=”seminar-title”のフォームタグだけを検出して処理を行います。
function edit_seminar_title_form($tag)
{
// nameの値がseminar-titleの場合
if ($tag['name'] === 'seminar-title') {
// ページタイトルを取得
$title = get_the_title();
// WPループ外などでnullを返す場合に備えてフォールバック
if (empty($title)) {
global $post;
if ($post) {
$title = get_the_title($post->ID);
}
}
// フォームの値に設定
$tag['values'] = array($title);
}
return $tag;
}
add_filter('wpcf7_form_tag', 'edit_seminar_title_form');これで、ページタイトルの値をフォームに自動反映させることができました。
まとめ
今回はContact Form 7で、ページタイトルの値をフォームに自動反映する方法を解説しました。
不動産サイトの物件情報ページやリクルートサイトの求人情報ページ等で、「共通フォームを使用したいけど、どのページからフォーム送信されているのかを把握したい」といった場合は、ぜひこちらの方法を使ってみて下さい。
今回は以上になります。最後までご覧頂き、ありがとうございました。