剔除 D&Z Theme 主题“热评日志”列表中的页面
这是一个困扰我很久的问题,D&Z Theme 主题侧栏顶部 Tab 栏里的“热评日志”列表中排名前2位的文章是“给我留言”和“主题模板”,而实际上这两篇“文章”是开启了评论的 Wordpress 页面而非日志。所以从严格的意义上来讲,这种排列是有误的。于是我就琢磨如何在“热评日志”的统计中去掉“页面”,其实理论上办法是很简单的——“热评日志”是我从 Wordpress 工具箱插件中提取出来的功能,它通过一条 SQL 查询语句就生成了该列表,那么我只需要在这个 SQL 语句中加入一个排除“页面”的条件就行了。不过由于对 Wordpress 数据库表结构不熟悉,导致我一直未能解决该问题。
今天在查询 Wordpress 官方文档的时候发现了:Database Description ,在 wp_posts 表里存在一个字段:post_type,从字面上理解这个字段肯定跟“日志”和“页面”的判断有关。于是我就查看了一下本地的 Wordpress 数据库,果然在 wp_posts 表的 post_type 字段里有4个值:attachment、page、post 和 revision ,虽然不知道 attachment 和 revision 是干嘛的,但是有 page 和 post 就足够了!
那么,我们打开 D&Z Theme 主题文件里的 functions.php 找到 // Get Top Commented Posts 这条注释,该注释下面的代码就是提供“热评日志”列表的,其中的 SQL 语句是:
1 | SELECT $tableposts.ID AS ID, post_title, post_name, COUNT($tablecomments.comment_post_ID) AS 'comment_total' FROM $tableposts LEFT JOIN $tablecomments ON $tableposts.ID = $tablecomments.comment_post_ID WHERE comment_approved = '1' AND post_date < '".date("Y-m-d H:i:s", (time() + ($time_difference * 3600)))."' AND post_status = 'publish' AND post_password = '' GROUP BY $tablecomments.comment_post_ID ORDER BY comment_total DESC LIMIT $limit |
写得还是有点小复杂的,不过没事,我们只要在 末尾处的
1 | GROUP BY $tablecomments.comment_post_ID ORDER BY comment_total DESC LIMIT $limit"); |
的前面加上(注意空格)
1 | AND post_type = 'post' |
将 wp_posts 判断为 post 的条件就行了。
最后保存修改,下回到首页即可看到效果了~
zEUS.
- 原文链接:
- 转载原创文章请注明:

Name : zEUS.











感谢一下~~
热门与否,我觉得应该用点击量+评论数+引用量来加权计算,单独使用某种指标都会有各种各样的问题
你实在太帅了!我被这个问题困扰了很久,终于得到解决了