非表示フィールド type=”hidden” にデータをためておいて、それをメール送信するということをしたかった。
MW WP FORM が最悪の理由
確かにアクションフック等々「マニュアル」には出てるんですけど、これが手抜きマニュアル。なので何かしようとおもうと調べるのにものすごく時間がかかる。
最悪MW WP FORM を読まないといけなくなる。
フックのさせ方は、書いてあるんですけど、その先で使えるものは引数で渡されたものだけ。
全然応用が効かないので、想定しているカスタマイズ以外は手が出せない。
今回の対応として hidden 属性のフィールドを使いたかったわけだけど、な、なんと?! hidden タイプでは、ID が設定されていない。
なんで?
MW WP FORM 非表示フィールドに id を付ける。
MW WP FORM は、各フィールドのショートコードをどうやって出力しているのか?
mw-wp-form/templates/form-fields/ の中にそれぞれの type の書式が設定されています。
これを書き直すと書式を変更することができます。
つまり、ショートコードを処理させてその値をそのまま吐き出しているだけってすごく合理的な方法で処理しています。
ショートコードの取り扱い。
ご存知の通り、ショートコードは [XXX A=xx B=cc] のような投稿内容を取り出して置換する機能です。前述のようなショートコードを処理させるならば、
0001add_shortcode(′XXX′ , ′myshortcode′);// short code
0002function myshortcode($atts)
0003{
0004extract(shortcode_atts(array(
0005′A′ => ′′,
0006′B′ => ′′,
0007), $atts));
0008}
これで、A= で設定された値は、 $A と言う変数で使えます。MW WP FORM の 非表示属性のショートコードは [mwform_hidden name=”XXX” value=”???”] といった書き方なので
mw-wp-form/templates/form-fields/hidden.php は以下のように設定されています。
0001<input type="hidden" name="<?php echo esc_attr( $name ); ?>" value="<?php echo esc_attr( $value ); ?>>" />
つまり、MW WP FORM 側の処理は、イメージとして
0001add_shortcode(′mwform_hidden′ , ′myshortcode′);// short code
0002function myshortcode($atts)
0003{
0004extract(shortcode_atts(array(
0005′name′ => ′′,
0006′value′ => ′′,
0007), $atts));
0008}
ということになります。MW WP FORM のショートコードで出力される内容をカスタマイズする まとめ
MW WP FORM のショートコードは、通常のショートコード処理を使って処理されていて、出力の形を変更したいときは、mw-wp-form/templates/form-fields/ にあるショートコードの変換書式を直接いじるしかない。参考になれば幸いです。