百度 | 神马 | 搜狗 | 技术文档 | 学习资料分享 - 记录帝国CMS及运维技术的点点滴滴
你的位置:首页 > 实用IT技术 » 正文

【Wordpress相关】WordPress 4.0 WP_Query 引入更强大的 Order By

发布时间:2020-09-17

作品分类:Wordpress相关  排序  顺序  升序  更强大  引入  4.0  WordPress  Order

WordPress 4.0 WP_Query 引入更强大的 Order By,

WP_Queryorderby 参数用于告诉获取的 Posts 是基于哪列进行排序的,默认是 post_date,并且 WP_Query 的默认排序顺序是降序,就是最新发布的日志排在前面。

[block]4[/block] 的 [block]5[/block] 基本用法

$q = new WP_Query( array( 'orderby' => 'post_title' ) );

或者:

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script>

$q = new WP_Query( array( 'orderby' => 'title' ) );

这两段代码都会生成如下的 SQL:

ORDER BY post_title DESC

[block]6[/block] 的 [block]7[/block] 高级用法

orderby 还可以接受有空格分开的多列:

$q = new WP_Query( array( 'orderby' => 'title author' ) );

在 4.0 之前,上面的代码会有问题,order 的值只会就加到 orederby 语句的最后,所以生成的 SQL 会这样子:

ORDER BY post_title, post_author DESC

因为 MySQL 默认的排序顺序是 ASC(升序),所以上面语句的结果就会和我们预期的不同,我们希望是按照标题降序,然后按照作者降序,而实际是按照标题升序,然后按照作者降序。

所以到 4.0,WordPress 修正了这个问题,如果你输入用空格分开的多列,每个列后面都会加入排序顺序,并且 4.0 还可以让你控制每列的排序顺序,我们可以通过传递一个数组给 WP_Queryorderby 参数:

$q = new WP_Query( array( 'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' ) ) );

生成的 SQL:

ORDER BY post_title DESC, menu_order ASC

更详细用法可以参考:WP_Query 累的 parse_order() 方法。


本站推荐使用的主机:,国外主机建议使用

Top