【WordPress】1つのフィールドに複数のバリデーションを設定する

acf/validate_save_postを利用したバリデーションについて。

こちらに追記した通りで、バリデーションの対象となるフィールドとエラーの文言を指定するacf_add_validation_error()は1つのフックに対してのみ動作します。

なので、1つのフックに対して複数の設定はできません。

function validation_acf_data(){
  if( empty( $_POST['form要素のname属性'] ) ){
    acf_add_validation_error( 'form要素のname属性', '入力して下さい');
  }
//以下は動作しません・・・
    if( empty( $_POST['form要素のname属性'] ) ){
    acf_add_validation_error( 'form要素のname属性', '入力して下さい');
  }
}
add_action( 'acf/validate_save_post', 'validation_acf_data' );

複数のフィールドに対する動作は諦めるとして、1つのフィールドに対する複数のバリデーションも動かないのはコード量が増えるので避けたいところ。

で、最初のifが動くのであれば条件分岐させれば良いじゃないかと。

条件を変えるなら「elseif」で動作

function validation_acf_data(){
  if( empty( $_POST['form要素のname属性'] ) ){
    acf_add_validation_error( 'form要素のname属性', '入力して下さい');
  } elseif( $_POST['form要素のname属性'] > 10 ){
    acf_add_validation_error( 'form要素のname属性', '10未満にして下さい');
  }
}
add_action( 'acf/validate_save_post', 'validation_acf_data' );

元の記事では未入力チェックだったので、入力値に対する検証を入れたかったのです。

上記は入力値が10より大きければエラーを表示させるというものです。

どのフォームに対しての検証なのか分かりやすい状態を保てるのでありがたいです。