お問い合わせフォームや資料請求フォームに、**「どの記事から送信されたか」**を自動で取得したいと思ったことはありませんか?
特に、ブログ記事ごとに異なる内容に対して問い合わせが来る場合、ユーザーが見ていた記事タイトルを自動でフォームにセットできたら便利ですよね。
この記事では、Contact Form7(CF7)で「投稿タイトル」を自動でフォームに渡す方法を、コピペで導入できるかたちでご紹介します!
もくじ
完成イメージ
ブログ記事の下に設置されたフォームに、記事タイトルが自動で入る(ユーザーが入力しなくてもOK!)
導入ステップ
STEP1. フォームに hidden フィールドを追加
まずは、Contact Form7 のフォーム設定に以下のコードを追加します。
[hidden post_title default:get]
このpost_title
という名前の項目に、投稿タイトルを渡します。
STEP2. 投稿にアクセスされたとき、タイトルをクエリに含める
次に、フォームを表示するリンクに投稿タイトルを付け足す処理を行います。
以下のコードを、テーマの functions.php に追加します。
function add_post_title_to_cf7_form($form_tag) {
if ($form_tag['name'] == 'post_title' && is_singular()) {
$form_tag['values'][] = get_the_title();
}
return $form_tag;
}
add_filter('wpcf7_form_tag', 'add_post_title_to_cf7_form');
このコードは、フォームの中にある post_title
という hidden フィールドに、現在表示中の投稿タイトルを自動で挿入してくれる処理です。
メールタグにも反映を忘れずに
メールタブで post_title
を使いたい場合は、メール本文に以下のように記述しましょう。
送信元の記事タイトル: [post_title]
注意点と補足
- この方法は、記事詳細ページ(
is_singular()
)でのみ機能します。 - 投稿タイトルがフォームに正しく渡されているか、テスト送信で確認してみましょう。
- 投稿タイトル以外にも、
get_the_ID()
などで記事IDを渡すカスタマイズも可能です。
まとめ
Contact Form7 で「記事タイトル」を自動取得することで、
ユーザーが何に対して問い合わせているのかが一目瞭然になります!
運用効率がぐっと上がるので、複数記事にフォームを設置している方は、ぜひ導入してみてくださいね。