サポート » プラグイン » 『Contact Form 7』で独自のショートコードをメール送信したい!

  • 解決済 matyatora

    (@matyatora)


    『Contact Form 7』で申込み時にトップページ来訪時のリファラURLを取得し、自分のメールに送信したいと考えているのですが、メールでの送信がうまくいきません。

    また、$_SESSIONに保存したURLもショートコードで出力ができていない状態です・・・。

    ———————————————————
    【状況】
    ・DANGANページビルダーを使用
    ・Contact Form 7を使用

    【DANGANページビルダーのsingle-lp.phpに記述】
    <?php if ( is_home() || is_front_page() ) : ?>
    <?php
    session_start();

    if ( !isset( $_SESSION[“url”] ) )
    $_SESSION[“url”] = $_SERVER[“HTTP_REFERER”];
    ?>

    【functions.phpに記述】
    <?php
    function my_shortcod(){
    return $_SERVER[“HTTP_REFERER”];
    }
    wpcf7_add_form_tag( ‘my_shortcode’, ‘my_shortcod’ );
    ?>
    <?php endif; ?>
    ———————————————————

    my_shortcodの『$_SERVER[“HTTP_REFERER”];』を『$_SESSION[“url”]』に変えれば良いのかとも思いましたが、変えると表示がされません。

    疑問点が多く、申し訳ありませんがご教授いただけましたら幸いです。
    何卒よろしくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは

    wpcf7_form_tag フィルターで HTTP_REFERER を値に持つタグ(referer)を追加する方法はどうでしょうか。

    例: functions.php に、

    function my_wpcf7_form_tag_referer( $form_tag ) {
    	if ( isset( $_SERVER['HTTP_REFERER'] ) && $form_tag['name'] == 'referer' ) {
    		$form_tag['values'][] = esc_html( $_SERVER['HTTP_REFERER'] );
    	}
    	return $form_tag;
    }
    
    add_filter( 'wpcf7_form_tag', 'my_wpcf7_form_tag_referer' );

    フォームの例:
    [hidden referer default:get]

    メールの例:
    [referer]

    なお、このフォーラムでコードを貼り付ける場合は、コードを選択し [code] ボタンをクリック(逆クォートで囲む)してください。
    詳細は下記ページを参照してください。
    https://wpdocs.osdn.jp/フォーラムへようこそ#.E3.82.B3.E3.83.BC.E3.83.89.E3.81.AE.E6.8A.95.E7.A8.BF

    ishitaka 様
    コードは囲まなければいけなかったのですね・・・
    申し訳ありません。

    参考コードありがとうございます!

    頂きましたコードを『functions.php』に組み込んだところ、リファラURLを出力することができました。

    ただ、こちらのコードだと直前のリファラURLを出力してしまうため、トップページ来訪時のリファラURLにはならないようです・・・。

    続けての質問で大変申し訳ありませんが、こちらの出力を『$_SESSION』などで保存した情報に切り替えることは可能でしょうか?

    お手数をお掛けいたしますが、ご教授頂けましたら幸いです。
    何卒よろしくお願い致します。

    大雑把なフローです。詳細はそれぞれの関数のドキュメントをご覧ください。

    function my_session_start(){
    	if ( ! session_id() ) {
    		session_start();
    	}
    }
    add_action( 'init', 'my_session_start' );
    
    function my_head() {
    	if ( ( is_home() || is_front_page() ) && isset( $_SERVER['HTTP_REFERER'] ) ) {
    		if ( !isset( $_SESSION['http_referer'] ) ) {
    			$_SESSION['http_referer'] = $_SERVER['HTTP_REFERER'];
    		}
    	}
    }
    add_action( 'wp_head', 'my_head' );
    
    function my_wpcf7_form_tag_referer( $form_tag ) {
    	if ( isset( $_SESSION['http_referer'] ) && $form_tag['name'] == 'referer' ) {
    		$form_tag['values'][] = esc_url( $_SESSION['http_referer'] );
    	}
    	return $form_tag;
    }
    add_filter( 'wpcf7_form_tag', 'my_wpcf7_form_tag_referer' );
    • この返信は1年、 3ヶ月前にishitakaが編集しました。

    ishitaka 様

    またもやコードを記述していただきましてありがとうございます!
    こちらのコードのドキュメントを確認しつつ、試してみたいと思います!

    今回はご教授いただき、誠にありがとうございます!

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「『Contact Form 7』で独自のショートコードをメール送信したい!」には新たに返信することはできません。