質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

0回答

1399閲覧

Advanced Custom Fieldsで、二つのフィールドへのバリデーションを複数つけたい

cwhiro

総合スコア21

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

0グッド

0クリップ

投稿2021/05/19 02:15

編集2021/05/24 03:06

ワードプレスのプラグイン、アドバンスドカスタムフィールドでの、更新時の独自バリデーションルールの追加方法について、悩んでいます。

こういった条件です。

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);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問