Query_POST的高级排序

时间:2016-09-13 作者:damd

我正在从事一个相当大且古老的Wordpress项目,其中有人以前使用过query_posts 到处都是。因此,我不愿意更改这些方法调用。我不是网站的维护者,我正在做一个快速修复。

每个有问题的帖子都有一个名为our_date, 表示日期和时间,以及title. 客户希望订购的帖子title, 但这样一来,未来的帖子会首先出现在列表中,而所有过去的日期都会出现在底部。

这就是我现在正在处理的问题:

\'orderby\' => array(\'date\' => \'ASC\'),
实现结果自定义排序的最佳方法是什么query_posts?

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

我认为这在单个WP API查询中是不可行的。你只是没有用单一的逻辑对整个集合进行排序,你有一半的逻辑在改变。我认为即使是SQL也无法表达这一点。

在没有看到具体情况(如计数、涉及分页等)的情况下,很难给出建议,但我的第一个想法是将其分为两个查询:

“未来”帖子(未来日期字段的元查询,按标题排序)“过去”帖子(过去日期字段的元查询,按标题排序)

SO网友:Mark Kaplun

现成的wordpress查询无法按两个键进行排序。我远非mysql人,但我相信您可以编写这样的查询,这意味着您可以使用相关的查询相关过滤器将wordpress生成的sql查询调整为所需的查询。

但我可能会将query\\u帖子的使用转换为正确使用wp_query, 并在PHP中对生成的帖子进行排序。性能影响应该可以忽略不计(如果使用页面缓存,则几乎为零),代码应该更直接一些。

相关推荐

如何在WooCommerce_Account_Orders函数中传递$CURRENT_PAGE?

woocommerce功能woocommerce_account_orders($current_page) 已调用1个参数$current_page. 该函数通过调用woocommerce_account_orders_endpoint 通过以下挂钩-add_action( \'woocommerce_account_orders_endpoint\', \'woocommerce_account_orders\' );然而,在上述挂钩中,$current_page 未在函数中作为参数传递。情况如何$c