SEARCH

CATEGORY

【Contact Form 7】イベントごとにフォームを使い回す方法|隠しフィールド×投稿タイトル連携

Contact Form 7でイベント申込みフォームを作る際、イベントごとにフォームを複製するのは手間がかかります。

本記事では、隠しフィールド(hidden)とカスタム投稿タイプを組み合わせて、「1つのフォームを複数イベントページで使い回す方法」を解説します。

投稿タイトル(イベント名)を自動取得し、メール本文に反映できるため、管理工数の削減にもつながります。

やりたいこと

1つの申込みフォームで、イベントごとに異なる情報を取得し、メールに反映させたいケースがあります。

例えば以下のようなケースです。

  • イベントごとにページは分けているが、フォームは共通にしたい
  • カスタム投稿でイベントを管理している
  • どのイベントからの申込みかをメールで判別したい

実現の仕組み

今回の仕組みは、以下の流れで動作します。

  1. カスタム投稿タイプ(event)でイベントごとに記事を作成
  2. 各イベントページに同じフォームを設置
  3. フォーム送信時に「現在の投稿ID」を取得
  4. その投稿のタイトル(イベント名)を取得
  5. hiddenフィールドに値をセット
  6. メール本文で出力

これにより、「どのイベントページから送信されたか」を自動で判別できます。

カスタム投稿タイプでイベントを作成する

まずはイベント管理用のカスタム投稿タイプを用意します。

例:

・投稿タイプスラッグ:event
・投稿タイトル:2026年4月26日(日):最近読んだ本を持ち寄る交流会

この「投稿タイトル」が、そのままイベント名として使用されます。

Contact Form 7 に隠しフィールドを追加する

次に、フォームに隠しフィールドを追加します。

※hiddenフィールドの名前(event-name)は、メール本文で使用するタグ名([event-name])と一致させる必要があります。

このフィールドは画面には表示されませんが、フォーム送信時のデータとしてサーバーに送られます。

そのため、ユーザーに見せずに「イベント名」などの情報を保持する用途に適しています。

※ユーザーにイベント名を表示したい場合は、以下のようにフォーム外に表示する方法もあります。

▼ single-event.php

メール本文にイベント名を反映する

メール設定の「題名」や「メッセージ本文」に、以下のようにタグを追加します。

[event-name] を記述することで、hiddenフィールドの値を出力できます。

functions.phpで投稿タイトルを動的にセットする

フォーム送信時に、現在表示している投稿のタイトル(イベント名)を取得し、
hiddenフィールドにセットします。

以下のコードを functions.php に追加します。

※テーマのfunctions.phpを編集するため、事前にバックアップを取っておくことをおすすめします。

ポイント

・フォーム送信時に実行されるフィルターを使用
_wpcf7_container_post で「現在の投稿ID」を取得
・投稿タイプが event の場合のみ処理を行う
・投稿タイトルを event-name にセット

これにより、各イベントページごとに自動で値が切り替わります。

動作確認のポイント

実装後は以下を確認します。

  • イベントページ(event投稿)から送信しているか
  • メールに正しくイベント名が表示されるか
  • 通常の投稿や固定ページでは値が入らないか(影響が出ないか)

まとめ

Contact Form 7 の隠しフィールドを活用することで、

  • フォームを1つに統一できる
  • イベントごとの情報を自動取得できる
  • 管理・運用コストを削減できる

といったメリットがあります。

イベント管理やセミナー申込みフォームなど、

  • イベントごとにページは分けたい
  • フォームは1つに統一したい

という場合に非常に有効な方法です。