我试图按两个元字段排序我的WP_Query结果,第一个日期然后是时间。如此有效
Date A 17:00
Date B 18:00
Date C 07:00
Date B 10:00
Date A 9:00
会来
Date A 9:00
Date A 17:00
Date B 10:00
Date B 18:00
Date C 07:00
这是我目前的代码:
"post_type" => "event",
"post_status" => "publish",
"posts_per_page" => 25,
"ignore_sticky_posts" => 0,
"show_sticky" => true,
"meta_query" => array(
array(
"key" => "_meta_event_start_date",
"compare" => ">=",
"value" => 0
),
array(
"key" => "_meta_event_start_time",
"compare" => ">=",
"value" => 0
),
),
"order" => "ASC",
"orderby" => "_meta_event_start_date _meta_event_start_time"
目前正在按日期排序我的结果,但不是时间(时间格式存储hh:mm(24小时))。我如何修改查询以使其工作?
我已经看到其他响应建议使用foreach循环,sql查询甚至过滤器。我不能使用这些,因为我正在使用的网站使用搜索插件Facet WP,并且搜索需要WP_Query来查询数据库和输出内容。
提前致谢。
答案 0 :(得分:1)
正如我所看到你试图按元键排序 - 根据WordPress 4.2的变化,你必须在这种情况下使用更复杂的语法 - 如下所示:
"post_type" => "event",
"post_status" => "publish",
"posts_per_page" => 25,
"ignore_sticky_posts" => 0,
"show_sticky" => true,
"meta_query" => array(
"event_start_date" => array(
"key" => "_meta_event_start_date",
"compare" => ">=",
"value" => 0
),
"event_start_time" => array(
"key" => "_meta_event_start_time",
"compare" => ">=",
"value" => 0
)
),
"orderby" => array(
"event_start_date" => "ASC",
"event_start_time" => "ASC"
)
此外 - 对于单个meta_key排序,值得记住,您必须使用 orderby 子句值meta_value and meta_value_num