我的网站上有一些字段(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;
}
谢谢!
答案 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))
由于运算符的优先级,如果您放置其他条件,则需要在其周围加上括号。