WordPress默认排序是按照文章发布时间的,有时候我们需要按照其他方式来排序,或者提供其他方式排序的功能。如果只是基本的排序,比如按照修改时间,或者按照评论数之类的,不需要做任何改动,直接在url加上orderby参数就可以的。
比如按评论数量排序就是:
- http://yourdomian.com/?orderby=comment_count
按修改时间就是:
- http://yourdomian.com/?orderby=modified
随机排序就是:
- http://yourdomian.com/?orderby=rand
按照ID大小就是:
- http://yourdomian.com/?orderby=ID
但是复杂一些的比如按照浏览量排序,则需要orderby和meta_key两个参数,我使用下面的链接并没有得到期望的排序:
- https://yourdomain.com/?orderby=meta_value_num&meta_key=views
说明meta_key这个参数无法正常传递,我们只能使用pre_get_posts这个hook来处理。把下面的代码加到functions.php中即可:
- add_action(‘pre_get_posts’,‘fa_orderby_views’);
- functionfa_orderby_views($query){
- if(is_home()&&$query->is_main_query()&&get_query_var(‘orderby’)==‘views’){
- $query->set(‘meta_key’,‘views’);
- $query->set(‘orderby’,‘meta_value_num’);
- }
- return$query;
- }
然后就可以使用下面的url来获取按照浏览量的排序了。
- https://yourdomain.com/?orderby=views
以上。