ワードプレスのプラグイン、アドバンスドカスタムフィールドでの、更新時の独自バリデーションルールの追加方法について、悩んでいます。
こういった条件です。
A、B、C、Dの4つのフィールドがあります。
これに2つのバリデーションルールをあてたいと思っています。
ルール1:AかBのどちらかに必ず入力しないといけない
ルール2:CかDのどちらかに必ず入力しないといけない
いずれのルールも、個別では期待通りに動きます。ですが、両方同時だとうまく動きません。
たとえば、AからDに何も入力しないと、ルール1と2により、下の画像のようにAからDの4つ全てのフィールドに警告が出ます。これは期待通りです。
次に、4つのフィールドに警告が出た状態で、Aだけ入力して更新してみます。すると、下の図のようにAのフィールドの警告は消えますが、B、C、Dの警告が出たままになります。しかし、Aに入力してルール1はクリアしているので、本当はCとDにだけ警告が出てほしいのです。
下記がコードです。Rule1とRule2で、どちらか一方のエラーだけなら問題ないのですが、どちらのルールにも反するエラーが重なると、上記のような問題があります
//RULE 1 function validate_species( $valid, $value, $field, $input ){ if( !$valid ) { return $valid; } $species1 = $_POST['acf']['field_609b650e953ec']; $species2 = $_POST['acf']['field_609c4053b0ca8']; if (empty($species1) && empty($species2)) { $valid = 'Error message for Rule1だにょん'; } return $valid; } add_filter('acf/validate_value/name=species1', 'validate_species', 10, 4); add_filter('acf/validate_value/name=species2', 'validate_species', 10, 4); //RULE 2 function validate_price( $valid, $value, $field, $input ){ if( !$valid ) { return $valid; } $price1 = $_POST['acf']['field_609de26de0b75']; $price2 = $_POST['acf']['field_609de2b939a27']; if (empty($price1) && empty($price2)) { $valid = 'Error message for Rule 2'; } return $valid; } add_filter('acf/validate_value/name=price', 'validate_price', 10, 4); add_filter('acf/validate_value/name=tokka', 'validate_price', 10, 4);
あなたの回答
tips
プレビュー