我有一个自定义的帖子类型,名为“Films,带有名为Showings,其中有一个字段start_datetime“”类型为DateTime。。。
我想执行一个查询,以获取在未来7天内放映的所有电影,并想通过放映的start\\u datetime订购它们。
我有这个问题:
$query = new \\WP_Query( array(
\'numberposts\' => -1,
\'post_type\' => \'film\',
\'meta_key\' => \'showings_%_start_datetime\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'ASC\',
\'meta_query\' => array(
array(
\'key\' => \'showings_%_start_datetime\',
\'value\' => array( time(), strtotime( \'+7 days\' ) ),
\'type\' => \'NUMERIC\',
\'compare\' => \'BETWEEN\'
)
)
));
这将正确捕获在未来7天内放映的所有电影,但它会在
FIRST 显示,我需要它在
FIRST FUTURE 正在显示。。。有什么帮助吗?
例如:电影A今天上映
电影B明天上映,一年前又上映了一场。
我的结果将按顺序排列:先是B片,然后是A片(因为实际上B片是以A片开始放映的)。但我需要从另一个角度订购,因为电影A是未来第一部上映的电影
最合适的回答,由SO网友:MikO 整理而成
我通过检查WP_Query
. 我意识到生成的SQL查询有两个内部联接,一个用于meta_key
另一个用于实际meta_query
.
基本上一方面是过滤那些showings_%_start_datetime
在接下来的七天里,另一方面(独立地)它将按他们的showings_%_start_datetime
价值
只是移动meta_query
基本查询的参数工作正常:
query = new \\WP_Query( array(
\'numberposts\' => -1,
\'post_type\' => \'film\',
\'meta_key\' => \'showings_%_start_datetime\',
\'meta_value\' => array( time(), strtotime( \'+7 days\' ) ),
\'meta_type\' => \'NUMERIC\',
\'meta_compare\' => \'BETWEEN\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'ASC\',
));