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