サポート » プラグイン » MW WP Formで複数の問い合わせデータに共通のIDを付与したい

  • leadadmin

    (@leadadmin)


    MW WP Formを使ってアンケートページを作成しています。

    【概要】
    一つのウェブサイトに4種類(4ページ)のアンケートがあり、1ページずつ回答してもらいます。
    (1ページ目のアンケートを回答(submit)すると自動で2ページ目のアンケートに移動します)
    これを数十人を対象に行います。

    【やりたいこと】
    Aさんの回答は「Aさんの回答」として集計したいため、共通のIDを付与したい
    *匿名アンケートなので個人情報での集計ができません

    【考えている対応】
    ①1ページ目にアクセスした時点でタイムスタンプを発行し、それを4ページすべてのhiddenのvalueに突っ込む
    (functionにて、空のvalueをタイムスタンプ挿入ありに置換)
    ②1ページ目にアクセスした時点でタイムスタンプを発行し、それをパラメータで次ページに受け渡していく

    現状、①でいいところまでいったんですが、ページ変移のたびに新しいタイムスタンプを発行してしまうので失敗しています。

    function my_mwform_post_content( $content ) {
        $uuid = uniqid(rand());
        $code = 'name="共通のID" value="'.$uuid.'"';
        $content = str_replace('name="共通のID" value=""', 'name="共通のID" value="'.$uuid.'"', $content);
        return $content;
    }
    add_filter( 'mwform_post_content_mw-wp-form-xxx', 'my_mwform_post_content' );
    • このトピックはleadadminが5年前に変更しました。
5件の返信を表示中 - 1 - 5件目 (全5件中)
  • ishitaka

    (@ishitaka)

    こんにちは

    URL パラメーターで渡す方法はどうでしょうか?

    手順としては、

    1. 各フォームに、共通の ID を格納するための hidden フィールドを作成する。
    2. 完了画面 URL に、次のフォームの URL を設定する。
    3. 最後のフォーム以外の mwform_redirect_url_mw-wp-form-xxx フィルターフックで、遷移先の URL に URL パラメーターを追加する。
    4. 最初のフォームの mwform_value_mw-wp-form-xxx フィルターフックで、hidden フィールドに生成した ID を返す。
    5. 2番目以降のフォームの mwform_value_mw-wp-form-xxx フィルターフックで、hidden フィールドに、URL パラメーターの値を返す。

    もっとスマートな方法がありそうですが・・・

    • この返信は5年前にishitakaが編集しました。
    ishitaka

    (@ishitaka)

    細かい不具合がありそうですが・・・おおよそこんな感じでしょうか?

    function my_mwform_value( $value, $name ) {
    	if ( $name === 'contactid' ) {
    		if ( ! empty( $_GET['contactid'] ) && ! is_array( $_GET['contactid'] ) ) {
    			$value = $_GET['contactid'];
    		} else {
    			$value = uniqid( rand() );
    		}
    	}
    	return $value;
    }
    add_filter( 'mwform_value_mw-wp-form-1', 'my_mwform_value', 10, 2 );
    add_filter( 'mwform_value_mw-wp-form-2', 'my_mwform_value', 10, 2 );
    add_filter( 'mwform_value_mw-wp-form-3', 'my_mwform_value', 10, 2 );
    add_filter( 'mwform_value_mw-wp-form-4', 'my_mwform_value', 10, 2 );
    
    function my_mwform_redirect_url( $url, $Data ) {
    	if ( $url && $Data->get_view_flg() == 'complete' && $_POST['contactid'] ) {
    		$url = add_query_arg( array( 'contactid' => $_POST['contactid'] ), $url );
    	}
    	return $url;
    }
    add_action( 'mwform_redirect_url_mw-wp-form-2', 'my_mwform_redirect_url', 10, 2 );
    add_action( 'mwform_redirect_url_mw-wp-form-3', 'my_mwform_redirect_url', 10, 2 );
    add_action( 'mwform_redirect_url_mw-wp-form-4', 'my_mwform_redirect_url', 10, 2 );
    トピック投稿者 leadadmin

    (@leadadmin)

    ご回答ありがとうございます。
    完了画面まではURLパラメータを引き継ぐんですが、
    完了画面から次のフォーム(2ページ目)に変移するとパラメータが消えてしまいます…。

    まず最初にuniqidでタイムスタンプを取得して、それを文字列として全ページのhiddenフィールドのバリューに入力(置換)することはやはり難しいのでしょうか?

    ishitaka

    (@ishitaka)

    hiddenフィールドのバリューに入力(置換)することはやはり難しいのでしょうか?

    ちょっと分かりません。

    完了画面から次のフォーム(2ページ目)に変移するとパラメータが消えてしまいます…。

    コードが間違えていました・・・
    最初のフォームの mwform_redirect_url フィルターフックをフックしてください。

    add_action( 'mwform_redirect_url_mw-wp-form-2', 'my_mwform_redirect_url', 10, 2 );
    add_action( 'mwform_redirect_url_mw-wp-form-3', 'my_mwform_redirect_url', 10, 2 );
    add_action( 'mwform_redirect_url_mw-wp-form-4', 'my_mwform_redirect_url', 10, 2 );

    add_filter( 'mwform_redirect_url_mw-wp-form-1', 'my_mwform_redirect_url', 10, 2 );
    add_filter( 'mwform_redirect_url_mw-wp-form-2', 'my_mwform_redirect_url', 10, 2 );
    add_filter( 'mwform_redirect_url_mw-wp-form-3', 'my_mwform_redirect_url', 10, 2 );
    • この返信は5年前にishitakaが編集しました。
    トピック投稿者 leadadmin

    (@leadadmin)

    コードが間違えていました・・・
    最初のフォームの mwform_redirect_url フィルターフックをフックしてください。

    こちらは気づいたので修正したのちにテストしたのですが、やはり完了画面から変移するとパラメータが消えてしまいます。
    お手数おかけしました。ちょっと頑張ってみます。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「MW WP Formで複数の問い合わせデータに共通のIDを付与したい」には新たに返信することはできません。