今までコンタクトフォーム7を利用していましたが、今一つ、あのプラグインを導入するとこっちのプラグインが動かない等ちょっと面倒くさいことが多かったので「MW WP Form」を使ってみることにした。
目次
プラグインについて
・無料
プラグイン本体(https://ja.wordpress.org/plugins/mw-wp-form/)
・有料
フォームジェネレーター
⇒追加スタイルあり
MW WP Form CAPTCHA
プラグイン販売(https://plugins.2inc.org/mw-wp-form/add-on/)
MW WP Formを利用してみて
フォームジェネレーター
フォームジェネレーターは、簡単に作れるが、自由度は減る。でも、大抵は問題ないのでは??
ゴリゴリやってもいいんだけど変更も多いからGUIでちゃちゃっと変更したいから導入した
⇒スタイルはビジネスタイプがよかったので追加した。
独自バリデーションチェックについて
※XXXは、ルール名
「mwform_validation_rules」でフィルターを追加して独自の値チェックルールを作ることができた。
add_filter( 'mwform_validation_rules', 'mwform_validation_rule_XXX' );
「public function rule( $key, array $options = array() )」で$optionsに設定値を引き渡すのが最初よくわからなかった。
nameのところで最後に[XXX]で指定すればいいらしい。
name="<?php echo MWF_Config::NAME; ?>[validation][<?php echo $key; ?>][<?php echo esc_attr( $this->getName() ); ?>][XXX]"
初期値を入れたい
ログイン情報は「https://plugins.2inc.org/mw-wp-form/manual/」を参照すれば利用可能。
あとは、filterで自分で作れるのでACFで定義した値も取得することが可能
add_filter( 'mwform_value_mw-wp-form-フォームID', 'my_mwform_value', 10, 2 );
通し番号
用意されている。
出力
用意されている。
これで作りたかったフォームができるかな・・・?
既に指定されたフォームに投稿済みなのか調べる
重複禁止!っていうフォームを用意したいと思ったのでちょっと実現できるのか調べてみました。
基本的にはデータは「post」「postmeta」で構成されているようなのでカスタム投稿と投稿者、フォームIDで抽出可能。
あとは「get_post_meta」で「tracking_number」を取得すれば、問い合わせ番号がわかる。
※ログインユーザー限定。
「このページには直接アクセスできません」って表示される件
完了画面URLだけ指定していたら、確認画面等でこのメッセージが表示されるようになった。
対処としては、全ての画面のURLを入れればよいようだ。
例:reportというページでフォームを作っていて、完了ページをthanksとした場合は下記のような感じ
ラジオボタンやチェックボックスの並びをランダムの順番にしたい
「mwform_choices_mw-wp-form-xxx」フィルターフックすれば可能「xxx」はフォームID
表示される毎に並び順が変わります。クイズや選択肢の位置を固定したくない場合に利用可能
あれ、確認画面で表示が異なることがある・・・なんだろうか..
function func_choices_random( $children, $atts ) { if ( $atts['name'] == 'フォームのネームの値' ) { shuffle($children); } return $children; } add_filter( 'mwform_choices_mw-wp-form-xxx', 'func_choices_random', 10, 2 );
→これだと呼び出される毎にランダムになってしまう。そのため、確認画面でもずれてしまう。
POSTしたときに送っている値は自動的に出力されてる「0,1,2…」の値である。
単純にシャッフルしただけだとフォームの戻り値が0,1,2…ってなってしまう。
っていうことでいっそのこと、VALUEと表示値を指定して返すことにしてみた。
フォームのVALUEの値が指定した値になり、ランダムが実現したよ~。
function func_choices_random( $children, $atts ) { if ( $atts['name'] == 'フォームのネームの値' ) { $shuffle = $children; shuffle($shuffle); $children = array(); foreach ($shuffle as $value) { $children += array($value => $value ); } } return $children; } add_filter( 'mwform_choices_mw-wp-form-xxx', 'func_choices_random', 10, 2 );