首页 > 解决方案 > 当其他字段为空时,将一个字段设为必填

问题描述

我的网站上有一些字段(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;
}

谢谢!

标签: phpvalidationif-statementadvanced-custom-fields

解决方案


您想要的是一个逻辑含义:如果您希望字段 b 仅在 a 不为空时才需要,则您有含义 a => b。这转换为 !a 或 b。所以在 PHP 中,这会给出:

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

可以简化为

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

如果您必须确保多个字段不为空,例如如果我们希望仅在 a OR b 不为空时才需要 c ,则此方法也有效:

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

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


推荐阅读