php - 当其他字段为空时,将一个字段设为必填
问题描述
我的网站上有一些字段(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;
}
谢谢!
解决方案
您想要的是一个逻辑含义:如果您希望字段 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))
如果您放置其他条件,则需要在其周围加上括号,因为运算符优先级。
推荐阅读
- windows - 我的应用程序图标在两个不同文件夹中的缩放比例不同
- git - 在开发过程中如何处理提交到多个分支?
- solr - 在 hybris Solr 中索引文档的几个属性
- javascript - 在Javascript中按下按钮时选择秒
- ms-access - 如何解决 MS Access SQL UPDATE 语法错误
- python - 如何在没有 cmd 的情况下安装 python 模块?
- python - 为什么我只能通过带有 Spark 结构化流的 Tweepy 侦听器的套接字发送变量“文本”?
- c# - 检查某些电子邮件地址时正则表达式“停止”
- azure - Powershell cmdlet 优雅地关闭 azure 虚拟机
- reactjs - 应用程序处于后台状态反应本机时如何清除间隔?