填写您的邮件地址,订阅我们的精彩内容:

WordPress中通过meta_value排序:按浏览量排序的实现方法

如果你自己开发WordPress,就会对WordPress的post meta非常熟悉,但是meta信息和post信息不在同一个数据库表中,因此无法简单的按照以前的方法进行排序。

本文通过按浏览量排序这个实例来讲解按meta值,也就是meta_value,来排序的方法。

我们要列出文章列表,要使用query_posts(或$WP_Query),我们做如下代码:

query_posts(
  array(
    'meta_key' => 'views',
    'orderby' => 'meta_value_num',
    'order' => 'DESC'
  )
);

首先,你需要通过其他的代码来实现文章的访问次数,这里就不扩展了,总之,文章的访问次数被放在一个meta_key=views的meta对中,meta_value就是该文章的访问次数。但是在上面的代码中你发现我使用了’meta_value_num’,而非’meta_value’,这里解释下。

在排序的时候如果使用meta_value_num,则在查询sql时默认将这个meta_value作为一个数值来对待,因此13大于2,而如果使用meta_value,则在查询时默认作为一个字符串来进行比较,因此’2’大于’13’。

明白了这一点之后,我们就可以实现很多妙用,比如本站的教程“章节”就是使用meta实现的,在排序的时候采用的是’meta_value’,而非’meta_value_num’,因为当初在设计的时候,采用了’4-3’这样的形式,表示第4节下的第3小节,如果使用’meta_value_num’的话,就变成了1,就排到2前面去了。

当然,在本节的学习时,你应该提前掌握query_posts的用法,这会在今后的课程中详细讲解。

下面我简单说几句