META_QUERY COMPARE>=不工作但<=工作?

时间:2018-04-22 作者:Yuri Scarbaci

我正在尝试执行以下代码:

$today123 = date(\'Ymd\');
$args123 = array (
        \'post_type\' => \'myType\',
        \'meta_query\' => array(
            \'relation\'=>\'AND\',
            array(
                \'key\'       => \'date\',//this is a custom field, not the std \'date\' field of wp
                \'compare\'   => \'>=\',
                \'value\'     => $today123,
            )
        ),
        \'posts_per_page\' => 10,
        \'orderby\' => \'meta_value_num\',
        \'order\' => \'ASC\' 
);
$variable=new WP_Query($args123);
为了根据自定义字段筛选自定义帖子类型,我按照预期在循环中使用查询,并通过几个var\\u导出检查输出

查询完全忽略了我的meta\\u查询(我尝试删除orderby,但即使没有它,也无法应用metaquery)

所以我对代码进行了一些调整,在各种情况下检查各种结果,我发现了一些东西,

如果使用

\'compare\'   => \'>=\',
它会被忽略,并返回所有帖子,即使没有

\'meta_date\' >= date(\'Ymd\')
但如果我使用完全相同的代码

\'compare\'   => \'<=\',
神奇地,过滤器得到应用,并按我所期望的那样工作<;=与工作相比。

我可能在这里遗漏了什么,我需要检索meta\\u date值大于或等于date(\'Ymd\')的“myType”帖子,并按meta\\u数据按ASC顺序对其排序。。。

为什么比较“<;=”工作并比较“>=”不工作?我怎样才能达到我想要的结果?

编辑:

“有趣的”发现:如果我不按orderby和order,比较>=作品。。。

1 个回复
最合适的回答,由SO网友:Yuri Scarbaci 整理而成

经过充分的调查和更多的调试和代码调整,我发现使用“date”作为元字段名会在wordpress查询本身中产生很多“混淆”,因为wordpress会混淆元查询“date”字段和“date”本身,为了避免所有这一切,解决方案只是将元字段的名称从date更改为meta\\u date,这样做可以使现场的所有查询都按预期进行!

结束

相关推荐