WordPress文章排序(WP_Query)

WordPress是一个非常强大的程序,通过各种自定义配置,可以实现各种需求。 今天,我们通过配置WP_Query来实现文章的的自定义排序。

排序和排序类型相关参数

有关文章排序方法和类型的查询,有两个参数可以使用:
order(字符串 | 数组):排序方法,ASC 为正序(从小到大);DESC 为倒序(从大到小)
orderby(字符串 | 数组):根据什么字段排序,默认是 post_date(文章日期)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//按标题倒序
//根据文章标题进行倒序排列:
$query = new WP_Query( array ( 'orderby' => 'title', 'order' => 'DESC' ) );
//先根据 menu_order 排序,如果出现无法排序的情况(比如相同或者为空)则再利用 title 排序。
$query = new WP_Query( array ( 'orderby' => 'menu_order title', 'order' => 'DESC' ) );
//随机排序
//获取一篇随机文章:
$query = new WP_Query( array ( 'orderby' => 'rand', 'posts_per_page' => '1' ) );
//热门文章
//获取根据评论数量排序的文章:
$query = new WP_Query( array( 'orderby' => 'comment_count' ) );
//多条件不同排序
//给多个排序条件,每个排序条件有不同的排序方法:
$query = new WP_Query( array( 'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' ) ) );

自定义字段
获取文章自定义字段 age 是 3 或 4 的文章,并且按照 age 字段值的数字大小排序:

1
2
3
4
5
6
7
8
9
10
11
12
13
$args = array(
    'meta_key'   => 'age',
    'orderby'    => 'meta_value_num',
    'order'      => 'ASC',
    'meta_query' => array(
        array(
            'key'     => 'age',
            'value'   => array( 3, 4 ),
            'compare' => 'IN',
        ),
    ),
);
$query = new WP_Query( $args );