META_QUERY,数字比较,不完全正常工作

时间:2011-09-13 作者:Michael Watson

我有一个wp\\u查询,从今天开始按升序获取所有自定义帖子类型,以列出我网站上的一些事件。虽然这样做很好:

 $args = array( \'post_type\'         =>  \'events\',
                                \'posts_per_page\'    =>  5,
                                \'orderby\'           =>  \'meta_value\', 
                                \'order\'             =>  \'ASC\',
                                \'meta_key\'          =>  \'my_special_date\',
                                \'meta_value\'        =>  date(\'Ymd\',strtotime("today")),
                                \'meta_compare\'      =>  \'>=\' ); 
当我将其转换为使用meta\\u query时,得到的结果不同,如下所示:

array(  \'post_type\'         =>  \'events\',
                \'posts_per_page\'    =>  5,
                \'orderby\'           =>  \'meta_value\', 
                \'order\'             =>  \'ASC\',
                \'meta_query\'        =>  array(
                                                array(
                                                        \'key\'           => \'my_special_date\',
                                                        \'value\'         => date(\'Ymd\',strtotime("today")),
                                                        \'compare\'       => \'>=\',
                                                        \'type\'          => \'NUMERIC\'
                                                        )

                                            )

                 ); 
请注意,我不是在比较日期,而是在比较数字,因为日期是Ymd格式的。元键的格式如下。我从中得到了一些非常奇怪的结果——我不太清楚出了什么问题。你们有什么明显的问题吗?

2 个回复
最合适的回答,由SO网友:Michael Watson 整理而成

简单解决方案:

orderby=>meta\\u键仍然需要设置,因为meta\\u查询不处理排序。

此外,我还将char数据作为数字进行比较。

SO网友:scribu

首先,如果您处理的是单个自定义字段,那么转换为“meta\\u query”没有任何意义。

其次,“meta\\u query”不处理排序。

最后,由于您的日期是“Ymd”格式,将它们作为数字进行比较将产生错误的结果。在初始代码中,它们作为字符串进行比较。

结束

相关推荐