
您现在的位置是:首页 > WordPress教程WordPress教程
WordPress文章排序?这几招让你想咋排就咋排!
WP集市
2025-08-21
【WordPress教程】
1807人已围观
写WordPress博客的同学都知道,默认文章列表排序就那老几样:按发布时间倒序(最新的在前面)、正序(最早的在前面),顶多再加个按标题字母排。但实际用起来哪够啊!比如你想把阅读量高的文章放前面,或者手动指定某几篇文章的顺序,这时候默认排序就歇菜了。今天咱就唠唠,WordPress文章排序到底有多少种玩法,小白也能看懂的那种。
先说说最简单的:后台直接改(适合懒人)
如果你只是想临时换个排序方式,比如某天想让读者先看到最早发的文章,不用写代码,后台直接改就行。
进WordPress后台,点「设置」→「阅读」,拉到最下面“文章排序”,默认是“最新文章优先”,你点一下改成“最早文章优先”,保存就完事。
不过这方法有个坑:只能改发布时间的正反序,想按评论数、阅读量排?没戏。所以这招仅限“临时救救急”,真要搞花活还得往下看。
中等需求:用插件(不用写代码,点点鼠标就行)
要是你嫌后台改太局限,但又怕碰代码,插件就是救星。推荐两个我常用的:
一个叫「Post Types Order」,装完启用,后台会多一个“排序”菜单,直接拖文章就能调整顺序,跟拖文件夹似的,贼直观。缺点是只能手动拖,文章多了能累死你——100篇文章拖到天荒地老。
另一个叫「Custom Post Type Order」,功能更全点,支持按自定义字段、评论数、阅读量排,还能设置“只在首页生效”“只在分类页生效”。比如你想让分类页的文章按评论数从多到少排,插件里找到对应分类,选“排序依据:评论数”“降序”,保存就行。
插件虽好,但有个小毛病:装多了占资源,而且有些插件设置项藏得深,找半天找不到。所以简单排序用插件,复杂的还得撸代码。
硬核玩家:代码自定义排序(想咋排咋排)
其实代码也没那么吓人,复制粘贴改改参数就行。WordPress有个叫pre_get_posts
的钩子函数,专门用来改文章查询的条件,咱就用它来控制排序。
举个栗子:按评论数多少排
比如你想让首页文章按评论数从多到少排(评论多的在前面),打开主题的functions.php
( Appearance → Theme Editor → 选functions.php),贴这段代码:
function custom_sort_by_comments($query) {
// 先判断:是不是在前台?是不是主循环?不是就别瞎改
if ( $query->is_home() && $query->is_main_query() && !is_admin() ) {
$query->set('orderby', 'comment_count'); // 排序依据:评论数
$query->set('order', 'DESC'); // 降序(从多到少)
}
}
add_action('pre_get_posts', 'custom_sort_by_comments');
// 白话注释:
// 第一行:定义个函数,名字随便起,叫custom_sort_by_comments就行
// if条件:必须是前台(!is_admin())、主循环(is_main_query())、首页(is_home()),不然后台文章列表也跟着变,到时候你找文章都费劲,别问我咋知道的
// 然后告诉WP:排序依据是comment_count(评论数),顺序是DESC(降序)
再举个栗子:按自定义字段排(手动控制顺序)
有时候你想手动指定某篇文章的位置,比如“置顶”但又不想用WP自带的置顶(自带置顶只能置顶一篇)。这时候可以建个自定义字段,比如叫display_order
,给文章赋值:想放第一就填1,第二填2,以此类推。
然后用代码按这个字段排序,还是在functions.php
里加:
function custom_sort_by_custom_field($query) {
if ( $query->is_archive() && $query->is_main_query() && !is_admin() ) { // 这次让分类页生效
$query->set('meta_key', 'display_order'); // 告诉WP:咱要按display_order这个自定义字段排
$query->set('orderby', 'meta_value_num'); // 按数字值排序(别用meta_value,会按字符串排,10会排在2前面)
$query->set('order', 'ASC'); // 升序(1在前,2在后)
}
}
add_action('pre_get_posts', 'custom_sort_by_custom_field');
// 重点:meta_value_num一定要用,不然10和2比,字符串排序会认为10比2小(因为第一个字符1 < 2),到时候顺序就乱了,踩过坑的举手!
注意事项(划重点!)
pre_get_posts
别全局用!一定要加条件判断(是不是前台、是不是主查询),不然后台列表、搜索结果都会受影响,到时候哭都来不及。- 排序依据有很多种:
date
(发布时间)、title
(标题)、modified
(修改时间)、rand
(随机),甚至author
(作者ID),想按啥排,把orderby
的值换成对应的就行。 - 插件和代码别混用!比如你用插件设了按评论数排,又用代码设了按自定义字段排,WP也懵圈,最后听谁的不一定。
总结一下
简单排序(时间正反序):后台直接改;
中等需求(评论数、阅读量):用插件(Post Types Order、Custom Post Type Order);
复杂需求(自定义字段、多条件排序):用pre_get_posts
写几行代码。
其实真不难,代码都是现成的,改改orderby
和条件判断就行。刚开始可能会出错,比如忘了加!is_admin()
导致后台乱套,没关系,删了重写嘛。玩WordPress不就是折腾出来的?你说对吧~
(完)
Tags:
文章版权声明:除非注明,否则均为WP集市原创文章,转载或复制请以超链接形式并注明出处。

相关文章
- WordPress用户注册咋整?手把手教你从0到1搞定设置,代码都给你抄好了!
- WordPress密码忘了?别慌!程序员教你3招5分钟搞定
- WordPress自动保存太烦人?老司机教你三招禁用秘籍
- 从零上手WordPress Gutenberg:别再用老编辑器啦,这才是2024年的正确打开方式!
- WordPress经典编辑器没了?别急,这几招直接给它拽回来!
- 手把手教你搞懂WordPress主题翻译!本地化成中文就这么简单
- 手把手教你给WordPress绑域名!别再让网站裸奔了喂
- WordPress主机怎么选?程序员掏心窝子指南
- WordPress缓存插件咋配?看完这篇,网站嗖嗖快!
- 手把手教你给WordPress装SSL证书,从此网站“绿锁”到手!
热门文章
