サポート » プラグイン » contact form 7 へリンクしたとき、ドロップダウンメニューへ任意の値をわた

  • http://ja.forums.wordpress.org/topic/3380

    こちらの情報を参考に、コンタクトフォームへリンクしたときに、テキストエリアに任意の文字列をコンタクトフォームのフィールドに渡すことができましたが、
    テキストエリアでない場合、たとえばドロップダウンメニューのような場合は、どのようにすればいいのかわかりません。

    何か方法はありますか?

    よろしくお願いします。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • 例えば、ドロップダウンメニュー(menu-123)の項目を
    abc, def, ghi
    にするとして、コンタクトフォームへのリンクを
    http://example.com/contact?ddm=abc-def-ghi
    のようにする場合、
    以下のようなコードをテーマの functions.php に書けば OK です。

    function my_form_tag_filter( $tag ) {
      if( isset( $_GET['ddm'] ) )
        if ( 'menu-123' === $tag['name'] ) {
          $tag['labels'] = (array) explode( '-', $_GET['ddm'] );
          $tag['values'] = $tag['labels'];
        }
      return $tag;
    }
    add_filter('wpcf7_form_tag', 'my_form_tag_filter', 11);
    トピック投稿者 Naoki-Jo

    (@naoki-jo)

    ありがとうございます。
    教えていただいたコードでやりたいことは実現できました。

    ただ少し、疑問なのですが、

    このコードで値をドロップダウンメニューに与えると、
    その後、そのドロップダウンメニューは、他の項目は選択不可能になります。

    ドロップダウンメニューの中に、メニューも表示はされません。

    もし、値をドロップダウンメニューに与えても、
    その後もメニューを選択、変更、可能にすることもできるんでしょうか?

    他の項目は選択不可能

    「他の項目」は何を指してますでしょうか。

    元々コンタクトフォームで設定しているドロップダウンメニューの選択項目のことなら

    $tag['labels'] = array_merge( $tag['labels'], (array) explode( '-', $_GET['ddm'] ) );

    とすれば書き換えじゃなくて、選択項目の追加になります。

    トピック投稿者 Naoki-Jo

    (@naoki-jo)

    if( isset( $_GET['ddm'] ) )
        if ( 'menu-123' === $tag['name'] ) {
    $tag['labels'] = array_merge( $tag['labels'], (array) explode( '-', $_GET['ddm'] ) );
          $tag['values'] = $tag['labels'];
        }

    としてみたのですが、値を渡してくれなくなってしまいました。

    リンクで値を渡しておいて、かつ後でも、ドロップダウンメニューの値を訂正可能というような状態に持っていきたいのです。

    何か方法はあるでしょうか

    トピック投稿者 Naoki-Jo

    (@naoki-jo)

    I.E.の場合、でのみ値を渡してはくれますが、
    その後、実際にフォームを使って送信したときには、その値が無視されてしまうようです。

    これは他のブラウザでは起きませんでした。

    かつ後でも、ドロップダウンメニューの値を訂正可能

    誰がどのタイミングでどのように訂正するのか、を具体的に説明していただくと良いかもです。

    実際にフォームを使って送信したときには、その値が無視されてしまう

    無視、を具体的に説明していただくと良いかもです。

    提示したコードは以下の環境で動作検証済です◎IEは未検証。
    Firefox 3.6.8
    Chrome 6.0.472.25 dev
    Contact Form 7 2.3
    WordPress 3.0.1

    ドロップダウンリストに、元ページから値を動的にセットしたく検索しましたら、
    このページにたどり着き、セットまではうまくいった次第です。
    URLに値を見せたくなかったので、POSTに設置しました。

    フォームへ値をセットはできたのですが、送信ボタンをクリックし必須項目の未記入等でエラーが出た際、セットされたドロップダウンリストが全部クリアされてしまうという現象に陥っております。
    他にもテキストをPOSTで渡しているのですが、そちらは無事に表示されております。

    functions.php

    if( isset( $_POST[‘busdate’] ) )
    if ( ‘bus-date’ === $tag[‘name’] ) {
    $tag[‘labels’] = (array) explode( ‘-‘, $_POST[‘busdate’] );
    $tag[‘values’] = (array) explode( ‘-‘, $_POST[‘busdatevalue’] );
    }

    フォームへ渡す前のページ

    <input type=”hidden” name=”busdate” value=”Aコース-Bコース-Cコース-不要”>
    <input type=”hidden” name=”busdatevalue” value=”0-1-3-9″>

    としております。
    何卒、ご教示いただきますよう、よろしくお願い致します。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「contact form 7 へリンクしたとき、ドロップダウンメニューへ任意の値をわた」には新たに返信することはできません。