• 解決済 kaz-nishimura

    (@kaz-nishimura)


    フォームでラジオボタンやドロップダウンボックスの選択肢を動的に設定したいことがあります。

    listo を呼び出す data:foobar の仕組みを流用して、以下のコードを書いてみました。画面には表示されますが、どの選択肢を選んでも「未定義の値がこの項目を通じて送信されました」というエラーになります。

    function my_fake_wpcf7_listo( $data, $options, $args ) {
    	$args = wp_parse_args( $args, array() );
    
    	foreach ( (array )$options as $option ) {
    		if ( $option == 'fruit' ) {
    			$data = array_merge( (array )$data, array ( 'リンゴ', 'ミカン', 'ブドウ' ) );
    		}
    		else if ( $option == 'vegie' ) {
    			$data = array_merge( (array )$data, array ( '玉ねぎ', '大根', '人参' ) );
    		}
    	}
    
    	return $data;
    }
    remove_filter( 'wpcf7_form_tag_data_option', 'wpcf7_listo', 10 );
    add_filter( 'wpcf7_form_tag_data_option', 'my_fake_wpcf7_listo', 10, 3 );

    フォームには [radio my-fruit data:fruit] と [select* my-vegie data:vegie] をいれてあります。

    何がいけない、または足りないのでしょうか。

    この仕組みにこだわっているわけではないので、選択肢を動的に設定できれば、他の方法でもかまいません。ご存じの方はご教示いただけると助かります。よろしくお願い申し上げます。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 kaz-nishimura

    (@kaz-nishimura)

    すみません。自己解決しました。functions.phpでなく、他のテンプレートで関数を定義していました。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「CF7でradio/selectの選択肢を動的に設定したい」には新たに返信することはできません。