Gravity Forms中All与Any模式结合问题:过滤条目返回全部结果求助
Gravity Forms 复合过滤条件失效问题排查与修复
问题根源
你的代码里嵌套过滤条件的写法不符合Gravity Forms的API规范——直接在field_filters数组里嵌套另一个field_filters会被系统忽略,导致所有过滤条件失效,最终返回全部活跃条目。
修复方案
Gravity Forms的复合过滤需要用**组过滤器(group)**来实现逻辑嵌套,外层用type => 'group'声明这是一组子条件,内部用filters定义组内的规则,而不是重复使用field_filters。
修正后的代码
$search_criteria = array( 'status' => 'active', 'field_filters' => array( 'mode' => 'all', // 外层所有条件必须同时满足(AND) array( 'key' => '1', 'value' => '1' ), array( 'key' => '2', 'value' => '0', 'operator' => '>=' ), array( 'type' => 'group', // 声明这是一个子条件组 'mode' => 'any', // 组内条件满足其一即可(OR) 'filters' => array( array( 'key' => '3', 'value' => '8' ), array( 'key' => '4', 'value' => '6' ) ) ) ) );
逻辑说明
- 外层
mode => 'all':要求字段1等于1、字段2大于等于0,同时满足后面的子条件组 - 子条件组
mode => 'any':字段3等于8 或者 字段4等于6,只要满足其中一个即可
内容的提问来源于stack exchange,提问作者user1683405
相关产品推荐
相关产品推荐

