【WordPress】MW WP Formのバリデーションを自由な条件で設定する方法。

徒然草2.0

WordPressで問い合わせフォームを作成する定番のプラグイン「MW WP Form」のカスタマイズをしていて困ったことがありました。

バリデーションが自由な条件で作れない件

私の調査不足でなければですが…MW WP Formのバリデーションは

(1)自由な条件で作れない

(2)エラーを自分の任意のタイミングで表示できない。

…ということに気づきました。

どういうことかというと、すでにバリデーションのために用意されているバリデーションルールのメソッドを使ってエラー文を表示することはできるのですが、それ以外のバリデーションを設定することができません。

例えば、「年齢」を入力させるテキストボックスを作ったとして、0~120の範囲外の数値だと「年齢は0~120の範囲で入力してください」というエラーになるバリデーションの設定ができません。値を範囲で指定するバリデーションルールのメソッドがないためです。

…これは困ったなあと思いましたが、以下の方法で自由な条件でバリデーションを作ることができます。

バリデーションを自由な条件で作成する手順

(1) hiddenの項目を作成して初期値に1を入れる。

※とりあえず目には見えないtype=”hidden”の入力アイテムを用意する。名前は仮にここではhide1とする。default=”1″のように何でもいいので値を入れておく。エラーメッセージの表示位置をずらしたければ、show_error=”false”を指定して別の場所に変えておく。

(2) validation_rule関数の中でエラーを表示したいタイミングで(if文条件を書いて)、noemptyをset_ruleで設定してメッセージを表示させればよい。

…ようは、エラーを出したい時にeqを使用して、値が等しくないエラーを出す仕組みを別のエラー文に書き換えることで代用しようということ。このテクニックを利用すればどんなバリデーションでも作成可能である。むしろ自由に条件を設定が可能なバリデーションがあれば事足りたのではないだろうか。

徒然草2.0
スポンサーリンク
シェアする
gomiryoをフォローする
ごみぶろぐ

コメント

タイトルとURLをコピーしました