前提・実現したいこと
wordpressのプラグインcontactform7で顧客ごとのパラメータを加えたサンクスページへ遷移させる
詳細
現在ContactForm7を使っておりフォームを入力していただくと固定のサンクスページに自動でリダイレクトします。
フォーム入力後、メール送信前(wpcf7_before_send_mail)に入力された値を別サービスにAPIを使ってPOSTしております。
POST後Json形式で識別コードが返されるのですが、その値をURLにパラメータとして付与してサンクスページへ遷移させたいのですがどうにもうまくいきません。
WPもPHPも勉強し始めたばかりなのでお力をお貸していただけないでしょうか。
該当のソースコード
php
1//サンクスページ移動 2add_action( 'wp_footer', 'redirect_thanks_page' ); 3function redirect_thanks_page() { 4 global $thanks;//サンクスページのスラッグ 5 6 ?> 7 <script> 8 document.addEventListener( 'wpcf7mailsent', function( event ) { 9 location = '<?php echo home_url('/'.$thanks); ?>'; 10 }, false ); 11 </script> 12 <?php 13}
php
1//APIでPOST 2add_action( 'wpcf7_before_send_mail', 'my_conversion' ); 3function my_conversion( $cf7 ) 4{ 5//フォームの入力値の取得、整形は省略 6$context = stream_context_create($opts); 7$response = file_get_contents( 8 $base_url . $post_string//URLとクエリパラメータ 9 ,false 10 ,$context 11 ); 12$result = json_decode($response,true); 13 $hashcode = $result->{'キー名'}; 14$user_data = array( 15 'status' => $result['status'], 16 'hashcode' => $result['message']['customer[hashcode]'] 17); 18//echo $user_data[hashcode]; 19$hashcode = $user_data[hashcode]; 20 //サンクスページのURL+'?パラメータ名='+$hashcodeに遷移出来たらOK 21} 22return $cf7; 23}
試したこと
サンクスページ移動のコードでは固定ページなので、APIでPOSTのコードのレスポンスになる変数$hashcodeをグローバル変数にしたらと思いましたが、関数の中の変数なのでグローバル化できないようでした。
APIでPOSTのコードでリダイレクトさせようとしたのですが、サンクスページ移動の内容や’location =’を使っても反応しないor <div class="ajax-error">Unexpected token H in JSON at position 0</div>と出て処理が止まります。
多分Ajaxの非同期処理が原因でフォーム入力後の戻り値を受け取れずにリダイレクトしているのかと思ったのですがその回避方法がわからないのと何か根本的にやり方が間違っているような気がして今回質問しました。
補足情報(FW/ツールのバージョンなど)
WP・CF7ともに最新です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。