我在客户网站上有一个事件列表,显示在侧边栏中。查看主页时,你会看到一个事件,如果你在网站的其他任何地方,你会在侧边栏中看到两个事件。我目前正在使用meta\\u查询比较对它们进行排序,该查询比较检查事件是今天还是将来。
我想做的是让事件首先以最接近当前日期的方式显示,然后沿着链继续,直到找到一个为止。目前,它显示的是未来最远的事件。因此,如果我有一个2012年1月27日的事件和一个2012年8月15日的事件,它似乎显示了八月的事件。
我目前拥有的代码如下。如果能给我一些建议,让它按照我想要的方式工作,我将不胜感激。如果可能的话,请对您发布的任何代码进行一点解释,我希望这是一次学习体验。
$totalPosts = 2;
$args = array(
\'post_type\' => \'upcoming_courses\',
\'order\' => \'ASC\',
\'orderby\' => \'meta_value\',
\'suppress_filters\' => true,
\'posts_per_page\' => $totalPosts,
\'numberposts\' => $totalPosts,
\'meta_query\' => array(
array(
\'key\' => \'course_date\',
\'value\' => date(\'Y-m-d\'),
\'compare\' => \'>=\',
\'type\' => \'NUMERIC\'
)
)
);
$my_query = new WP_Query( $args );
SO网友:jave.web
我知道这很旧,但是ordering by DESC does not make sense for this case.
您选择DATE
s>=
CURRENT_DATE
, 现在,您希望首先显示最接近今天的,比如明天,然后后天。。。
什么是更大的日期?Tomorrow
或day after tomorrow
? 我不知道你怎么样,但我敢打赌tomorrow < day after tomorrow
, 因此,订购DESC意味着您将在后天首先获得,因为它更大。
我认为你真正的问题是打字(我假设你把日期存储在Y-m-d
也设置格式。。。
告诉我WP_Query
: “我正在处理日期”:。说订购应该通过键入最新信息来完成\'meta_type\' => \'DATE\',
2。假设比较应该通过键入最新内容来完成
\'meta_query\' => [
[
\'key\' => \'course_date\',
\'value\' => date(\'Y-m-d\'),
\'compare\' => \'>=\',
\'type\' => \'DATE\' //!important!
]
],
。。。然后很简单:
\'orderby\' => \'meta_value\',
\'order\' => \'ASC\',
。。。应该可以正常工作:)