WordPress 用の Validator ヘルパー作ってます

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() 関数で検証してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください