【问题标题】:WP_Query orderby multiple parameters not workingWP_Query orderby 多个参数不起作用
【发布时间】:2016-08-10 09:29:51
【问题描述】:

我正在尝试按两个元字段(第一个日期和时间)按我的 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 (24hr))。我该如何修改查询以使其正常工作?

我看到其他建议使用 foreach 循环、sql 查询甚至过滤器的响应。不幸的是,我不能使用这些,因为我正在开发的网站使用搜索插件 Facet WP,并且搜索需要 WP_Query 来查询数据库和输出内容。

提前致谢。

【问题讨论】:

  • 由于它生成SQL,它可能需要orderby值中的字段之间的逗号。 "orderby" => "_meta_event_start_date, _meta_event_start_time" 有效吗?
  • 很遗憾,这不起作用,只是恢复了搜索默认值

标签: wordpress


【解决方案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

【讨论】:

  • Ohhhh,所以如果我想通过 ACF 插件创建的自定义列进行排序,我必须为其添加一些枯燥的元查询(如 > -100000)或任何匹配所有内容的内容。为了能够在 "orderby" 中使用新命名的 "event_start_date" ,因为否则经典列 "start_date" 将被忽略。哦,tnx 很多信息,这对我也有帮助,wp 完全无视我的订单。
  • 另外值得一提的是,在 wp db 中一切都是字符串,所以在定义自定义列时,需要指定它是什么类型的列。例如数字 - 类型' => '数字'
猜你喜欢
  • 2017-02-08
  • 2016-06-18
  • 2016-06-15
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多