MW WP FORM URLのパラメータで処理や選択リストを切り替える。
いつものように意味不明なHELP。
MW WP FORM は、HELPを補助メモとして実際使ってみて、推測して・・・ってやらないといけませんねwww
で、プルダウンの選択枝を変えたいと。
リンクURLに何番のリストに切り替えるとか、
そういうことをやりたい。
基本どちらでもよさそうですが、
mwform_value_mw-wp-form-XXX は、どうもリストの変更の設定の仕方が不明です。
なのでmwform_choices_mw-wp-form-XXX でやる。
リスト形式じゃない場合は、mwform_value_mw-wp-form-XXX でやると考えると整理しやすい。
私はこんな感じでやってます。
MW_WP_Form_yHook_env に値(MW WP FORM の ID = POST ID)を入れておいて、
ぐるぐる回そうということです。
※URLのパラメータで処理を行うことを想定しています。
$name にフィールド名が入ってきます。
$value に初期値が入ってきます。
$_GET[XX] には URLのパラメータが入ってきます。
別にURLのパラメータを使えってことはなく、開発したプログラムからもってきてるのでそういう仕様です。
普通に return で初期値を返してやればOKです。
例えば、 http ://~/?aaa=1 の場合
$_GET[‘aaa’] には 1 が入ってきます。
その値でフィールドの初期値を切り替えてあげるといった仕様のプログラムです。
上記の例では、 a , b のパラメータをそれぞれ select と jighousho の初期値として入れています。
※select など複数指定のものは、array で送り返さないといけない。
本来は、普通に↓でOKです。
※URLのパラメータで処理を行うことを想定しています。
mwform_choices_mw-wp-form-XXX は、ラジオボックス、チェックボックス、セレクトボックスといった、
選択リストを設定するフィールドしか飛んでこないみたいです。
なので mwform_choices_mw-wp-form-XXX はラジオボックス、チェックボックス、セレクトボックス専用と思いましょうwww
ここでは、URLのパラメータを $_GET ではなく、なんとなくスマートに取り出すために
mw_wp_form_getParamVal という関数を使ってみました。
まぁ、ソースを小さくするか速度を優先するかの違いですが、あまり大差ないと思いますw
mwform_choices_mw-wp-form-XXX は、$children と $atts を送ってきます。
$attsには、フィールド名、$children には、初期値が入ってきています。
$attsで該当するフィールド名を探り、 $children に値を入れて返せば初期値を変えることができます。
選択系のフィールドは配列にして送り返します。
呼び出しは、trace(出力したいもの,ファイルモード,出力ファイル名補助)
ファイルモードは省略時 append モードで開きます。
出力ファイル名補助は、出力する場所によってファイル名を切り替えるために準備してあります。
出力先は、当該のプラグインのフォルダーになります。
mw_wp_form_yHook_a で使っていますが、文字列、変数、配列を出力することができます。
単純に文字列や変数ならば、 trace(‘a=’.$a); で a=XXXX と出しますが、
配列は、見出しを付けることができないので2行にして出力する配列の名前などを入れるといいです。
こんな感じですね。
mw_wp_form_yHook_tracesub(“—attr—“);
mw_wp_form_yHook_tracesub($atts);
この記事では、便宜上 trace としていますが、mw_wp_form_yHook_tracesub を指しています。
でも、プラグインごとに関数名を設定しないとバッティングしますので注意してください。
MW WP FORM は、HELPを補助メモとして実際使ってみて、推測して・・・ってやらないといけませんねwww
で、プルダウンの選択枝を変えたいと。
リンクURLに何番のリストに切り替えるとか、
そういうことをやりたい。
MW WP FORM の選択枝や初期内を変更するためのフック
で、とりあえず、フックを仕掛けます。基本どちらでもよさそうですが、
mwform_value_mw-wp-form-XXX は、どうもリストの変更の設定の仕方が不明です。
なのでmwform_choices_mw-wp-form-XXX でやる。
リスト形式じゃない場合は、mwform_value_mw-wp-form-XXX でやると考えると整理しやすい。
0001 //テキストフィールドなど、
0002 //ラジオボタン、チェックボックス、セレクトボックス以外の初期値を設定する。
0003 add_action( 'mwform_value_mw-wp-form-' .$numb, 'mw_wp_form_yHook' , 10, 3 );
0004
0001 //ラジオボタン、チェックボックス、セレクトボックスの初期値を設定する。
0002 add_filter( 'mwform_choices_mw-wp-form-'.$numb, 'mw_wp_form_yHook_a', 10, 3 );
XXX 部分を動的に設定
私はこんな感じでやってます。
MW_WP_Form_yHook_env に値(MW WP FORM の ID = POST ID)を入れておいて、
ぐるぐる回そうということです。
0001 $MW_WP_Form_yHook_env = get_option('MW_WP_Form_yHook_env');
0002 if( $MW_WP_Form_yHook_env !='' ){
0003 MW_WP_Form_yHook_fook( $MW_WP_Form_yHook_env );
0004 }
0005 /********************************************************/
0006 function MW_WP_Form_yHook_fook($str)
0007 /********************************************************/
0008 {
0009 //
0010 // フック
0011 //
0012 $str = str_replace("\r\n", "!cr!" , $str);
0013 $str = str_replace("\n" , "!cr!" , $str);
0014 $str = str_replace("\r" , "!cr!" , $str);
0015
0016 $numbers = explode('!cr!',$str);
0017 foreach($numbers as $numb){
0018 $numb = trim($numb," \t\n\r\0\x0B");
0019 if($numb!=''){
0020 //value値が設定可能ものに関してURL引数で渡された値をもとに動的にvalueを
0021 //設定することができる
0022 //テキストフィールドやラジオボタンの初期値を設定することが可能です
0023 add_action( 'mwform_value_mw-wp-form-' .$numb, 'mw_wp_form_yHook' , 10, 3 );
0024 add_filter( 'mwform_choices_mw-wp-form-'.$numb, 'mw_wp_form_yHook_a', 10, 3 );
0025 }
0026 }
0027 }
MW WP FORM の(mwform_value)フックに引っかかったら
mwform_value_mw-wp-form-XXX でフックした時の使い方説明します。※URLのパラメータで処理を行うことを想定しています。
0001 /********************************************************/
0002 function mw_wp_form_yHook($value, $name)
0003 /********************************************************/
0004 {
0005 //mwform_value_mw-wp-form-でひっかかった場合
0006 //ラジオボックス、チェックボックス、セレクトボックス以外の設定
0007
0008 //セレクトボックスでも取れて、初期値の選択リストを返せる・・・みたいだけどいまいち不明。
0009 if ( $name === 'select' && !empty( $_GET['a'] ) && !is_array( $_GET['a'] ) ) {
0010 $ary = explode(/,/,$_GET['a']);
0011 return $ary;
0012 }
0013 //ラジオボックス、チェックボックス、セレクトボックス以外の設定
0014 //単純に初期値を戻すだけ。
0015 if ( $name === 'jighousho' && !empty( $_GET['b'] ) && !is_array( $_GET['b'] ) ) {
0016 return $_GET['b'];
0017 }
0018 return $value;
0019 }
$value に初期値が入ってきます。
$_GET[XX] には URLのパラメータが入ってきます。
別にURLのパラメータを使えってことはなく、開発したプログラムからもってきてるのでそういう仕様です。
普通に return で初期値を返してやればOKです。
例えば、 http ://~/?aaa=1 の場合
$_GET[‘aaa’] には 1 が入ってきます。
その値でフィールドの初期値を切り替えてあげるといった仕様のプログラムです。
上記の例では、 a , b のパラメータをそれぞれ select と jighousho の初期値として入れています。
※select など複数指定のものは、array で送り返さないといけない。
本来は、普通に↓でOKです。
0001 if ( $name === 'jighousho' ) {
0002 return 'ほげほげ';
0003 }
MW WP FORM の(mwform_choices)フックに引っかかったら
mwform_choices_mw-wp-form-XXX を説明します。※URLのパラメータで処理を行うことを想定しています。
mwform_choices_mw-wp-form-XXX は、ラジオボックス、チェックボックス、セレクトボックスといった、
選択リストを設定するフィールドしか飛んでこないみたいです。
なので mwform_choices_mw-wp-form-XXX はラジオボックス、チェックボックス、セレクトボックス専用と思いましょうwww
0001 /********************************************************/
0002 function mw_wp_form_yHook_a( $children, $atts )
0003 /********************************************************/
0004 {
0005 mw_wp_form_yHook_tracesub("---attr---");
0006 mw_wp_form_yHook_tracesub($atts);
0007 mw_wp_form_yHook_tracesub("---children---");
0008 mw_wp_form_yHook_tracesub($children);
0009
0010 if ( $atts['name'] == 'select' ) {
0011 $pars = explode(",",mw_wp_form_getParamVal('a'));
0012 $children = $pars;
0013 }
0014 if ( $atts['name'] == 'jighousho' ) {
0015 $children = array('TEXTa');
0016 }
0017 return $children;
0018 }
ここでは、URLのパラメータを $_GET ではなく、なんとなくスマートに取り出すために
mw_wp_form_getParamVal という関数を使ってみました。
0001 /********************************************************/
0002 function mw_wp_form_getParamVal($param)
0003 /********************************************************/
0004 {
0005 //
0006 // URL から パラメータを抜き出す
0007 // $a = mw_wp_form_getParamVal('a');
0008 //
0009 $val = (isset($_GET[$param]) && $_GET[$param] != '') ? $_GET[$param] : '';
0010 $val = htmlspecialchars($val, ENT_QUOTES);
0011 return $val;
0012 }
まぁ、ソースを小さくするか速度を優先するかの違いですが、あまり大差ないと思いますw
mwform_choices_mw-wp-form-XXX は、$children と $atts を送ってきます。
$attsには、フィールド名、$children には、初期値が入ってきています。
$attsで該当するフィールド名を探り、 $children に値を入れて返せば初期値を変えることができます。
選択系のフィールドは配列にして送り返します。
汎用的なトレース用の関数
ついでにトレース用の関数です。呼び出しは、trace(出力したいもの,ファイルモード,出力ファイル名補助)
ファイルモードは省略時 append モードで開きます。
出力ファイル名補助は、出力する場所によってファイル名を切り替えるために準備してあります。
出力先は、当該のプラグインのフォルダーになります。
mw_wp_form_yHook_a で使っていますが、文字列、変数、配列を出力することができます。
単純に文字列や変数ならば、 trace(‘a=’.$a); で a=XXXX と出しますが、
配列は、見出しを付けることができないので2行にして出力する配列の名前などを入れるといいです。
こんな感じですね。
mw_wp_form_yHook_tracesub(“—attr—“);
mw_wp_form_yHook_tracesub($atts);
この記事では、便宜上 trace としていますが、mw_wp_form_yHook_tracesub を指しています。
でも、プラグインごとに関数名を設定しないとバッティングしますので注意してください。
汎用追跡用関数
0001 function mw_wp_form_yHook_tracesub( $mess , $sw='a' , $apname='') {
0002
0003 //return;
0004
0005 if($apname !=''){
0006 $apname = '_'.$apname;
0007 }
0008 $plugin_myfile = plugin_dir_path(__FILE__).'snapshot'.$apname.'.txt';
0009
0010 $ofp = fopen($plugin_myfile,$sw);
0011 if(is_array($mess)){
0012 fwrite($ofp,print_r($mess,true));
0013 }else{
0014 fwrite($ofp,$mess."\n");
0015 }
0016 fclose($ofp);
0017 }