ContactForm7でURLパラメータ(引数)の値を項目に渡して自動挿入する方法

こんにちは、ゾノ( @ozonosho )です。

さて、今日のブログではContactForm7でURLパラメータ(引数)の値を項目に渡して自動挿入する方法を紹介したいと思います。

WordPressのお問い合わせ系プラグインで最も人気のあるContactForm7において「どのページから飛んできたかを判別して自動的に問い合わせフォームに値を挿入したい」という相談を受けたので実装してみました。

ContactForm7でURLパラメータ(引数)の値を項目に渡す方法

実装は簡単で、functions.phpに下記のコードを追加してください。

function my_form_tag_filter($tag) {
  if(!is_array($tag)) return $tag;
  if(isset($_GET['パラメータ名称'])) {
    if($tag['name'] == 'フォーム項目名称') {
      $tag['values'] = (array) $_GET['パラメータ名称'];
    }
  }
  return $tag;
}
add_filter('wpcf7_form_tag', 'my_form_tag_filter', 11);

パラメータ名称には渡したURLパラメータ、フォーム項目名称には値を渡したい項目の名称をそれぞれ挿入してください。

単純な値をパラメータとして渡すのも良いですし、たとえば投稿IDやユーザーIDを渡せば投稿データやユーザーデータを取得してどんな情報でも自由に問い合わせフォームに挿入することができるようになります。

下のコードは記事タイトルをフォームの項目に挿入する場合の例です。
URLパラメータ「post_id」で渡した記事IDからget_postで記事データを取得して、フォームの項目「your-title」に記事のタイトルを挿入しています。

function my_form_tag_filter($tag) {
  if(!is_array($tag)) return $tag;
  if(isset($_GET['post-id'])){
    $postID = $_GET['post-id'];
    $post = get_post($postID);
    if($tag['name'] == 'your-title') {
      $tag['values'] = $post->post_title;
    }
  }
  return $tag;
}
add_filter('wpcf7_form_tag', 'my_form_tag_filter', 11);

これで問い合わせフォームの項目「your-title」に記事のタイトルが自動挿入されます。

実際に僕の運営する相談サイト「ココトモ」の掲示板ではこの実装方法でユーザーからトピック・コメントの違反報告を受付しています。

URLパラメータを渡すことでコンタクトフォーム活用の幅がとても広がるのでぜひお試しください。

おわりに

以上、今回の記事ではContactForm7でURLパラメータ(引数)の値を項目に渡して自動挿入する方法を紹介させていただきました。

つくりばのことが気になりましたか?

つくりばは、ココトモ・未来地図を自社で10年以上運営してきた知見をもとに、相談・コミュニティの開発と運営を支援しています。いきなりのご相談でなくて大丈夫です。まずは私たちの実績や考え方をご覧ください。

つくりばについて知る

← WordPressの一覧へ戻る

Webサービスの課題を、まずは無料相談で整理しませんか。

既存サービスの改善、新規立ち上げ、運用サポート、予算内での優先順位づけなど、今の状況に合わせてじっくりお話を伺います。まだ形になっていない段階のご相談も大丈夫です。

  • videocamオンライン対応
  • forum課題整理だけでも歓迎
  • payments概算費用の目安がわかる
無料相談を申し込む