サポート » プラグイン » Trust Formに初期値を渡す

  • 解決済 yyy111

    (@knon-disign)


    お問い合わせフォームの「Trust Form」に初期値を渡したいと思っております。

    他のページからフォームページへパラメーターをつけて遷移し、
    遷移時にフォームの値が入力済みになっているようなことは可能でしょうか?

    内容としては、下記のcontactform7のtrustform版になります。
    http://ja.forums.wordpress.org/topic/3380?replies=10

    下記ソースで

    function my_form_tag_filter($tag){
    	if(!is_array($tag))
    		return $tag;
    	if(isset($_GET['goods'])){
    		$name = $tag['name'];
    		if($name == '〇〇')
    		$tag['values'] = (array) $_GET['goods'];
    	}
    	return $tag;
    }
    add_filter('〇〇', 'my_form_tag_filter', 11);

    【$name】にinputに記載されていた【element-番号】 (trustformではnameは成り行きでしょうか?)、
    【add_filter】にtrust-form.phpの apply_filtersで記載されていたmail以外の各種フックを順番に記載してみたものの反応がなく、具体箇所がわからず、お伺いしました。

    よろしくお願い致します。

    バージョン:
    wordpress 3.5.2
    trustform 1.7.1

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • モデレーター Takuro Hishikawa

    (@hissy)

    Contact Form 7 と Trust Form は全く別のプラグインですので、CF7のカスタマイズ方法はTrust Formでは使えませんよ。

    yyy111

    (@knon-disign)

    もしやいけるのではと思いましたが、
    そうですか、、、

    どうもありがとうございます。

    モデレーター gatespace

    (@gatespace)

    似たようなことをやったので、ソースはきれいじゃないかも。

    前提条件
    「extension_form」というスラッグの固定ページにフォームを設置しています。
    フォームに遷移元のページのIDを渡しています(この辺はおこのみで)。

    遷移元(フォームに行く前)のページのテンプレートファイルに書いておく

    <form class="toform" action="'<?php echo get_permalink(get_page_by_path('extension_form')->ID); ?>'" method="post">
    <input type="hidden" name="eventID" value="<?php the_ID();?>">
    <input type="submit" name="submit" class="submit" value="申込はこちら">
    </form>

    フォームのカスタマイズ
    http://trust-form.org/customize-html/
    フォームのテンプレートファイル優先順位は上記に書いてあります。

    プラグインのフォルダ内にある「trust-form-tpl-.php」をお使いのテーマフォルダの中にコピーして加工してください。

    フォーム設置のページには遷移元のページから $_POST[‘eventID’] が渡っているので、
    trust-form-tpl-.php 内で適宜加工してください。

    モデレーター gatespace

    (@gatespace)

    あ、これだけじゃ足りない。

    フォームのテンプレートファイルに直接追加したフォーム要素もデータベースに保存したり、メール送信したい場合には別途フィルターにフックするカスタマイズが必要です。

    ユーザーへの返信メールの本文の場合は tr_pre_auto_reply_mail_body フックが使えます。

    function my_tr_pre_auto_reply_mail_body ($body) {
    	// $bodyがメール本文
    	return $body;
    }
    add_filter("tr_pre_auto_reply_mail_body", "my_tr_pre_auto_reply_mail_body");

    管理者へのメールは tr_pre_admin_mail フックが使えます。

    自分がやったのはここまでなので、DBにも保存する方法は分かりません。
    (ソース読めば分かるのでしょうけど・・・。)

    yyy111

    (@knon-disign)

    gatespace様

    ご記載頂き、どうもありがとうございます!
    ご提示頂いた方法で、解決致しました。

    >trust-form-tpl-.php 内で適宜加工してください。

    こちら適宜加工する部分で引っかかってしまい、、、

    遷移先がかなり強引なのですが、
    テキストボックスの位置を自由に変更出来るのと、
    返信メール部分のカスタマイズをしなくても大丈夫だったので、
    下記方法で実装しました。

    ●管理画面
    該当テキストボックスに class=”goods”を指定

    ●遷移元

    <form class="toform" action="<?php echo get_permalink(get_page_by_path('extension_form')->ID); ?>" method="post">
    <input type="hidden" name="eventID" value="<?php the_ID();?>">
    <input type="submit" name="submit" class="submit" value="お問い合わせ">
    </form>

    ●遷移先
    trust-form-tpl-.php

    下記追記

    <?php
    $events = $_POST['eventID'];
    $my_page = get_page($events);
    $goods = $my_page->post_title;
    echo "<p style=\"display:none;\" id=\"goods\">". esc_html($goods)."</p>";
    ?>
    <script type="text/javascript">
    $(function(){
    	if($("input.goods").val()==""){
    		var goodsText = $("#goods").text();
    		$("input.goods").val(goodsText);
    	}
    });
    </script>

    もっといいやり方があるかと思いますが、、、
    一応載せておきます

    どうもありがとうございました。

    モデレーター gatespace

    (@gatespace)

    はじめから遷移元のページタイトルを使いたいのであれば

    <input type="hidden" name="goods" value="<?php the_title();?>">

    として
    trust-form-tpl-.php では

    <?php
    $goods = $_POST['goods'];
    echo "<p style=\"display:none;\" id=\"goods\">". esc_html($goods)."</p>";
    ?>

    で良いと思います。
    (例で投稿IDにしていたのは元々カスタムフィールドの値を使いたかったためです。)

    trust-form-tpl-.php 内で遷移元の値を取得できていれば、あとはPHPだろうがjQueryだろうがどうとでもなると思います。

    yyy111

    (@knon-disign)

    gatespace様

    シンプル版の記載まで頂いてしまいすみません。。。

    今回はページタイトルを使用するパターンでしたので、
    シンプルな方で実装致しました。

    >(例で投稿IDにしていたのは元々カスタムフィールドの値を使いたかったためです。)

    たしかに、、、投稿IDで渡すと汎用性がぐっと高くなりますね。
    今後に活かしたいです!

    ありがとうございました!

    gatespaceさん、ご伝授ありがとうございます。
    解決済みの件で申し訳ございませんが、上記内容関連のtrust-formを利用した見本があれば教えていただけますか? どうもうまく行かない初心者です…(T.T)

    モデレーター gatespace

    (@gatespace)

    ※このスレッドは解決済みですので、似たような話題でも新規でスレッドを作成ください。
    (その際、このスレッドへのリンクを張るとベター)

    サンプルはないです。
    初心者と言うことですが、上記の回答内容はPHPやワートプレスの関数の他、Trust Formのカスタマイズも必要とします。
    難しければやらない方がいいです。

    あと別のスレッドもご参照ください
    http://ja.forums.wordpress.org/topic/38247?replies=2

    gatespaceさん、お返事ありがとうございます!
     唐突で申し訳ございませんでした。こちらのスレッドを作成しましたので、ご指導よろしくお願いいたします。
     おっしゃる通り、初心者という理由で甘えてはいけません。基礎をしっかりとたたきこもうとがんばります!

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「Trust Formに初期値を渡す」には新たに返信することはできません。