是不是觉得WordPress默认按时间排序文章的方式很不方便。虽然有些主题提供了置顶功能,但依然不能满足完全自定义文章排序的需求。本文将介绍,如何通过修改主题,来实现对文章的自定义排序。
不要看到修改源文件就退缩,其实整个过程很简单,添加几行代码就可以了。
首先打开你wordpress主题的index.php文件。找到类似下面的这段话:
while(have_posts()) {
这个就是用来显示你博客文章的循环语句。把它修改成下面的样子:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args=array(
'orderby' => 基于排序的对象,
'paged' => $paged,
'order' => 'DESC'
);
query_posts($args);
while(have_posts()) {
其中,“基于排序的对象”可以是文章的任何属性,比方:"id", "title", "date"。
通过这种方法,你可以修改文章排序的依据。不过依旧不能完全自定义文章排序。要完全自定义文章排序,我们要用到wordpress的另一个功能:meta data。
编辑文章时,你可能在文章编辑Widget下面看到像下面这样Widget:
如果没有,点击你编辑界面右上角的“显示选项”,选中“自定义栏目”。
然后,为每一篇文章添加一个meta data,key可以自己定义,比方post_order,meta的值则是你文章排序的依据。
类似的,在index.php中替换如下代码,只是把orderby改成了你的meta_key,同时添加一项meta_key。如下:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args=array(
'meta_key' => 'post_order',
'orderby' => 'meta_value',
'paged' => $paged,
'order' => 'DESC'
);
query_posts($args);
while (have_posts()) {
这样,你就可以依据自己定义的meta_data对文章进行排序了。
最后要说的是,这样方法不仅试用于首页,也适用于标签页、分类页等存档页面。修改的放法一样。读者可以自己尝试一下。