2024/07/08

【Contact Form 7】投稿タイトルを自動入力する方法

【Contact Form 7 multistep form】動かない時の対処法

Contact Form 7(以下、CF7)はWordPressで広く使用されているお問い合わせフォームプラグインです。
今回は、このCF7を使ってフォームに投稿タイトルを自動で入力する方法をご紹介します。

この方法を活用することで、ユーザーが特定の投稿について問い合わせを行う際に、タイトルを自動でフォームに入力できるようになります。

調べた通り設定してもうまく動かない、こんなことありませんか?そんな時の対処法をお伝えします。

フォームにフィールドを追加

まず、CF7のフォームにフィールドを追加します。投稿タイトルをフォームに渡すことができます。以下のコードをCF7のフォームに追加してください。以下例では「example_title」としていますが名前は任意で設定可能です。

[text example_title]

隠しフィールドを使えば、フォームには表示されなくても、自動返信メールにのみどの投稿から問い合わせされたか表示させることもできます。

その場合はCF7のhidden関数を入れます。

[hidden example_title]

カスタム関数を追加

次に、WordPressのテーマファイル(通常はfunctions.php)にカスタム関数を追加します。この関数は、特定の投稿IDをもとに投稿タイトルを取得し、CF7の隠しフィールドにそのタイトルを入力します。

以下のコードをfunctions.phpに追加してください。

function cform7_title_name($tag) {
 if (!is_array($tag)) return $tag;
 $post_id = (isset($_GET['post_id']) && $_GET['post_id']) ? $_GET['post_id'] : false;
 if ($post_id) {
  if ($tag['name'] == 'title') {
   $example_title = get_the_title($post_id);
   $tag['values'] = array($example_title);
  }
 }
 return $tag;
}
add_filter('wpcf7_form_tag', 'cform7_title_name', 11);

このコードは、post_idがURLパラメータに含まれている場合、そのpost_idに対応する投稿タイトルを取得し、先ほど設定したCF7のフィールド「title」にそのタイトルを設定します。

お問い合わせフォームへのリンクを作成

最後に、特定の投稿ページからお問い合わせフォームへのリンクを作成します。このリンクには投稿IDをURLパラメータとして含める必要があります。以下のコードを使用してリンクを作成してください。

<a href="<?= home_url('/contact/?post_id=' . get_the_ID()); ?>">お問い合わせ</a>

このリンクをクリックすると、ユーザーはお問い合わせフォームのページに移動します。そして、フォームには自動的にその投稿のタイトルが入力された状態になります。

hdden関数でメールにのみ投稿タイトルを表示させる場合は、メールの設定で「example_title」を入力すればOKです。

[example_title]

WEBサイト・サービス制作依頼はこちら