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 两个参数,我使用下面的链接并没有得到期望的排序

http://yourdomain.com/?orderby=meta_value_num&meta_key=views

说明 meta_key 这个参数无法正常传递,我们只能使用 pre_get_posts 这个 hook 来处理。把下面的代码加到 functions.php 中即可

//WordPress自定义文章排序
add_action('pre_get_posts', 'fa_orderby_views');
function fa_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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注