2018.09.06

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パラメータ(引数)の値を項目に渡して自動挿入する方法を紹介させていただきました。

当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。

あなたのサイトに理想の機能を実装!WordPressカスタマイズサービス

本サービスはあなたのWordPressサイトに理想の機能を実装するサービスとなります。 どのような機能・要望でも実現可能です! Wo......

→この記事を読む