サポート » プラグイン » ACFで作成したメールフォームに遷移元の情報を自動入力したい

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • ちなみに、ACF Proです。

    有料のものを購入されているなら、その購入元に問い合わせてみるのがよいと思いますよ。
    購入しないと検証できないですし。ただACFに限らず、それは問い合わせフォーム側に対して、カスタムフィールドデータを取得して値を付与するプログラムコーディングが必要だと思います。

    とはいえ、 Contact Form 7を使っていれば
    http://contactform7.com/ja/getting-default-values-from-the-context/
    にかかれているようにデフォルトの値をカスタムフィールドの値に出来ますので、これを利用したらいけるかもしれませんねぇ。

    販売元に聞きたいのは山々なんですが、自分には言葉の壁が随分と高いのでどなたか日本語が通じる方で知っている人はいないかなと淡い望みをかけてこちらに書いてみました。
    無料版でも同じことはできるはずだと思ったのもあります。

    でも・・・やっぱり他のプラグインに頼るしかないんでしょうかね・・・

    メールフォームに渡すということですがそのメールフォームは何をお使いでしょうか?
    外部のものであればGETやPOSTで渡したり
    wordpressであれば投稿idからひっぱってきたり
    wordpress外であってもphpであればwordpressの関数を使ったりなどいろいろと方法はあります

    すみません、acfのフロントエンドフォームを利用したメール送信を自作しているってことですね?
    だとしたら商品ページから作られているフォームに飛ばす際に投稿IDをGETパラメータでわたしてやったあとjsで設定するという方法ではだめでしょうか?

    >jdbbさん

    はい、acfのフロントエンドフォームを利用したメール送信を自作しています。
    JEでの設定はやったことがないので試してみます。
    ただ、具体的にどういう処理を試せばいいのか想像がつかないので、もしよろしければ似たようなことを紹介しているURLを教えていただけませんでしょうか?

    https://www.advancedcustomfields.com/resources/acf_form/
    このページのJavascriptの項目に

    <script type="text/javascript">
    (function($) {
    
    	// setup fields
    	acf.do_action('append', $('#popup-id'));
    
    })(jQuery);
    </script>

    というのがあったんですが、これを何とかすればいいんでしょうか?

    いえ、作っちゃえばいいと思います。

    <?php if(!empty($_GET['post_id'])): ?>
    phpでこのあたりにpost_idで渡されたidの投稿オブジェクトとかを取得しておく
    
    <script type="text/javascript">
    jQuery(document).ready(function($){
      var set_value = function(input_id, input_val) {
        if ($('#' + id).val() != '') {
          return;
        }
        $('#' + id).val(input_val);
      }
      set_value(inputテキストのID, 設定したい値);
      set_value(inputテキストのID2, 設定したい値);
      set_value(inputテキストのID3, 設定したい値);
    });
    </script>
    <?php endif; ?>

    このような感じで下のほうにある部分で目的のフィールドのIDを
    デベロッパーツールなどで調べておいて設定したい値をphpで出力する
    というような感じです。

    ありがとうございます!!

    とりあえずテキストフォームに設定したい文字列をセットできるかのテストとして、if文なしでこのように記述してみました。
    記述場所はメールフォームを呼び出した<?php acf_form ?>のすぐ下です。

    <script type="text/javascript">
    jQuery(document).ready(function($){
      var set_value = function(input_id, input_val) {
        if ($('#' + id).val() != '') {
          return;
        }
        $('#' + id).val(input_val);
      }
      set_value(acf-field_577b00716e88e, あいうえお);
    });
    </script>

    しかし、この状態ではフォームのテキストエリア内に「あいうえお」の文字をセットすることはできませんでした。

    そもそもやり方が間違っていますか?

    あと、acfのサイトで「value」で検索をかけたら下記のようなものが出てきました。
    これは今回の件に関係しているものでしょうか?
    acf/format_value
    acf/validate_value

    コード内の意味まではチェックしていませんが、少なくても set_valueにいれる文字列データは、シングルクォーテーションで括らないとだめですよ。

    set_value(‘acf-field_577b00716e88e’, ‘あいうえお’);

    という感じです。

    kimipoohさんありがとうございます。
    kimipoohさんのご指摘に加えて私のコードにも間違いが有りました。

    if ($('#' + id).val() != '')

    if ($('#' + input_id).val() != '')

    $('#' + id).val(input_val);

    $('#' + input_id).val(input_val);
    となります

    kimipoohさん、jdbbさん、ありがとうございます!

    <script type="text/javascript">
    jQuery(document).ready(function($){
      var set_value = function(input_id, input_val) {
        if ($('#' + input_id).val() != '') {
          return;
        }
        $('#' + input_id).val(input_val);
      }
      set_value('acf-field_577b00716e88e', 'あいうえお');
    });
    </script>

    とやったところ、「あいうえお」と入力することができました。
    if文との組み合わせはこれから試しますが、とりあえずのお礼とご報告です。

    大変遅くなりました。
    下記のように記述して、動作を確認できました。ありがとうございました。

    <?php if(!empty($_GET['post_id'])):
    $id = $_GET['id'];
    $author_name = $_GET['name'];
    $author_mail = $_GET['mail'];
    ?>
    
    <script type="text/javascript">
    jQuery(document).ready(function($){
    	var set_value = function(input_id, input_val) {
    		if ($('#' + input_id).val() != '') {
    			return;
    		}
    		$('#' + input_id).val(input_val);
    	}
    set_value('acf-field_578862a57387d', "<?php echo $author_name; ?>"); //送信先名
    set_value('acf-field_5788626a7387c', "<?php echo $author_mail; ?>"); //送信先アドレス
    });
    </script>
    <?php endif; ?>
13件の返信を表示中 - 1 - 13件目 (全13件中)
  • トピック「ACFで作成したメールフォームに遷移元の情報を自動入力したい」には新たに返信することはできません。