お役立ちコラム
WordPress

【Contact Form 7】ページタイトルの値をフォームに自動反映する方法(投稿・カスタム投稿・固定ページ)

※本記事には広告が含まれます

不動産サイトやリクルートサイトでは、投稿やカスタム投稿で運用している物件情報ページや求人情報ページに共通のお問い合わせフォームを設置し、フォームが送信された際に「どのページから送信されたのか」が分かるよう把握したいケースがあります。

そんなとき、Contact Form 7の共通フォーム内にページタイトルを自動で反映する入力フィールドを用意しておくことで、どのページからの問い合わせかを正確に取得できます。

今回は、Contact Form 7でページタイトルをフォームに自動反映する方法を解説します。

Contact Form 7でページタイトルをフォームに自動反映する方法

Contact Form 7でページタイトルをフォームへ自動反映するには、以下の方法で実装します。

◾️ページタイトルをフォームに自動反映する方法

  1. テキストボックスの用意
  2. 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で、ページタイトルの値をフォームに自動反映する方法を解説しました。

不動産サイトの物件情報ページやリクルートサイトの求人情報ページ等で、「共通フォームを使用したいけど、どのページからフォーム送信されているのかを把握したい」といった場合は、ぜひこちらの方法を使ってみて下さい。

今回は以上になります。最後までご覧頂き、ありがとうございました。

HOMEお役立ちコラムWordPress【Contact Form 7】ページタイトルの値をフォームに自動反映する方法(投稿・カスタム投稿・固定ページ)