在其他字段为空时使一个字段为必需

时间:2019-03-01 18:31:13

标签: php validation if-statement advanced-custom-fields

我的网站上有一些字段(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 :(得分:0)

您想要的是一个逻辑含义:如果只希望当a不为空时才需要字段b,则意味着a => b。转换为!a或b。 因此,在PHP中,它会给出:

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

可以简化为

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

如果您必须确保多个字段不为空,例如,如果我们希望仅当OR b不为空时才需要c,则也可以使用此功能:

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

由于运算符的优先级,如果您放置其他条件,则需要在其周围加上括号。