我们常见的WordPress站点文章排序,通常情况下是按发布时间的升序或降序方式排列,这种排序方式几乎可以满足大多数站点的需求了,但是有些另类的站点可能会有一些另类的需求:我想手动修改文章的排列方式,可以随意更改文章的排列位置。其实WordPress的pre_get_posts就可以轻松解决这个问题,不过你得自己动手改一些代码。

WordPress手动修改文章排列顺序

1、打开WordPress当前主题目录,打开functions.php,添加以下PHP代码:


add_action('pre_get_posts', 'ludou_orderby');
function ludou_orderby( $query ) {
    if ( (is_home() || is_archive()) && $query->is_main_query() ) {
        $query->set( 'meta_key', 'sort' );
        $query->set( 'orderby', array('meta_value_num' => 'DESC', 'date' => 'DESC') );
    }
    return $query;
}

2、给之前发表的所有文章添加自定义字段(或者称作自定义栏目,在文章编辑页底部可以看到),名称为 sort ,值填数字。这样在首页,文章的排列顺序就按照sort字段的值,从大到小排列了。通过修改sort字段的值,可以达到自定义文章排列顺序的目的。

3、需要注意的是,通过以上修改后,你必须给所有文章添加自定义字段sort,否则没有添加sort字段的文章将无法在首页显示。这也许就是手动排序需要付出的代价吧,要不然何谓手动?

注意:以上修改将影响主页、分类页、标签页、日期页和作者页面等。