Создание одного поля обязательным, когда другие поля пусты - PullRequest
0 голосов
/ 01 марта 2019

У меня есть несколько полей (WP ACF) на моем веб-сайте, и мне нужно одно обязательное поле (field_5c66e017f8359), когда остальные не пусты.

Кто может помочь мне с следующим фрагментом кода?

add_filter('acf/validate_value/key=field_5c66e017f8359', 'custom_validate_title', 20, 4);
function custom_validate_title($valid, $value, $field, $input) {
  if (!empty($_POST['acf']['field_5c6d43781bcb1']) ||
  !empty($_POST['acf']['field_5c66e094f835a']) ||
  !empty($_POST['acf']['field_5c66e0d4f835b']) ||
  !empty($_POST['acf']['field_5c66e130f835c']) ||
  !empty($_POST['acf']['field_5c703c1fd5851'])) {
  if (empty($value)) {
  $valid = 'This field is required because you have added a value to some other field';
    }
  }
  return $valid;
}

Спасибо!

1 Ответ

0 голосов
/ 01 марта 2019

То, что вы хотите, является логическим следствием: если вы хотите, чтобы поле b требовалось только тогда, когда a не пусто, у вас есть значение a => b.Это переводится как! A или b.Таким образом, в PHP это даст:

//if (a => b)
if (!(!empty(a)) || (!empty(b)))

Что может быть упрощено до

if (empty(a) || !empty(b))

Эта работа также, если вы должны убедиться, что поля множественных значений не пусты, например, если мы хотимc требуется, только если OR b не является пустым:

// (a or b) => c
if (!(!empty(a) || !empty(b)) || !empty(c))
//Equivalent to
if ((empty(a) && empty(b)) || !empty(c))

Вам нужно будет заключить его в скобки, если вы поставите другие условия из-за приоритета оператора.

...