WordPress で管理画面使うプラグインとか作ってると、毎回入力値の検証とかせこせこと書いてるんですが、メンドクサイのでまるっとまとめてやれるヘルパークラスを作っちゃおうと思い立ちまして、1時間くらいで書きました。
GitHub に置いておくんで、よろしければ使ってやってください。
wokamoto/WP-InputValidator · GitHub
さて、こいつの使い方。
まずは、初期化。
入力値を POST, GET, COOKIE, 連想配列から受け取れます。
require_once(dirname(__FILE__).'/class-InputValidator.php'); $iv = new InputValidator('POST');
Validate ルールの追加方法は、こんな感じです。
set_rules() メソッドに、フィールド名、適用したいルールを引数にして設定します。
複数ルールを設定したいときは、array() で渡してください。
また、ルールによっては、第3引数以降にパラメータを追加することもできます。
$iv->set_rules('email', array('trim','esc_html','required','email')); $iv->set_rules('password', array('trim','esc_html','required')); $iv->set_rules('password', 'min_length', 8); // 最低文字数8文字
現状、用意している Validate ルールは、以下の通りです。
- trim – 入力値を trim() します。
- esc_html – 入力値を WordPress の esc_html() 関数を通して返します。
- required – 未入力なら、エラーにします。
- min_length, max_length – 最低文字数、最大文字数を set_rules メソッドの第3引数でしていできます。
- bool – 入力値を評価して、true or false を返します。
- url – 入力値が url として正しいか評価します。
- email – 入力値が email アドレスとして正しいか評価します。
- tel – 入力値が電話番号として正しいか評価します。
- postcode – 入力値が郵便番号として正しいか評価します。
- numeric – 入力値が数値として正しいか評価します。
もし独自ルールを追加したい場合は、以下のようにします。
function validate_hogehoge( $val, $field, $arg_1 ) { if ( $val !== $arg_1 ) { return new WP_Error($field, 'message here'); } return $val; } $iv->set_rules('field', 'validate_hogehoge', 'hogehoge');
独自ルールは、is_callable() な関数として定義し、第1引数は検証したい値、第2引数はフィールド名、第3引数以降は、任意で指定してください。
エラーを返したい場合は、WP_Error オブジェクトを返すようにしてください。
設定した Validate ルールを通した入力値を取得するには、以下のようにします。
$email = $iv->input('email', true); $inputs = $iv->input(array('email', 'telephone', 'password'), true);
第1引数に配列を渡すと配列として入力値を返します。
第2引数に false を指定すると、Validate ルールを通さない入力値をそのまま取得します。
Validate ルールでエラーとして返されたかどうかは、is_wp_error() 関数で検証してください。