我正在使用以下meta\\u查询根据以下搜索条件搜索博客帖子,
搜索逻辑:
如果设置了过期日期,请检查帖子的过期日期,否则只需将其包括在国家/地区($_country
) 在筛选器中,搜索具有上述过期日期规则的特定国家/地区。否则,只需应用过期日期规则即可元查询:
$expire_meta_1 = array(
\'key\' => \'_simple_fields_fieldGroupID_3_fieldID_7_numInSet_0\',
\'value\' => \'\',
\'compare\' => \'NOT EXISTS\'
);
$expire_meta_2 = array(
\'key\' => \'_simple_fields_fieldGroupID_3_fieldID_7_numInSet_0\',
\'value\' => date("Y-m-d"),
\'compare\' => \'>=\',
\'type\' => \'DATE\'
);
if($_country!=\'\'){
$country_meta = array(
\'key\' => \'_simple_fields_fieldGroupID_3_fieldID_8_numInSet_0\',
\'value\' => $_country,
\'compare\' => \'=\'
);
$args[\'meta_query\'] = array( \'relation\' => \'AND\', array( \'relation\' => \'OR\', $expire_meta_1, $expire_meta_2), $country_meta);
} else{
$args[\'meta_query\'] = array( \'relation\' => \'OR\', $expire_meta_1, $expire_meta_2);
}
问题是,如果是国家搜索,post应该设置过期日期。但我需要选择的帖子也没有设置过期日期。(如果设置了check the expire,则无论如何都可以)。
但是,如果我没有搜索特定的国家,过期日期规则(规则1)工作正常。
谁都知道我犯了什么错。任何帮助都将不胜感激。我希望问题是明确的,否则我可以提供更多的细节,请让我知道。提前谢谢。
最合适的回答,由SO网友:Janith Chinthana 整理而成
经过几个小时的调试,我终于发现了真正的问题。
我正在使用simple fields
要保存expire date
和country
价值观所以在simple field
即使我们没有设置任何内容,它仍然是在数据库中保存空字符串。因此,当我检查不存在的字段时,它不会给出正确的结果,但是当我搜索空字符串(如下所示)时,它会给出正确的输出。
$expire_meta_1 = array(
\'key\' => \'_simple_fields_fieldGroupID_3_fieldID_7_numInSet_0\',
\'value\' => \'\',
\'compare\' => \'=\'
);
我应该感谢@Sumit帮助我找出真正的问题。