網生@誌 | zEUS.’Blog

Not Only Wordpress Template, But Also My Life…
首页 » Wordpress研究 » 剔除 D&Z Theme 主题“热评日志”列表中的页面

剔除 D&Z Theme 主题“热评日志”列表中的页面

字体大小:T | T
wordpress-research category

这是一个困扰我很久的问题,D&Z Theme 主题侧栏顶部 Tab 栏里的“热评日志”列表中排名前2位的文章是“给我留言”和“主题模板”,而实际上这两篇“文章”是开启了评论的 页面而非日志。所以从严格的意义上来讲,这种排列是有误的。于是我就琢磨如何在“热评日志”的统计中去掉“页面”,其实理论上办法是很简单的——“热评日志”是我从 工具箱插件中提取出来的功能,它通过一条 SQL 查询语句就生成了该列表,那么我只需要在这个 SQL 语句中加入一个排除“页面”的条件就行了。不过由于对 数据库表结构不熟悉,导致我一直未能解决该问题。

今天在查询 官方文档的时候发现了:Database Description ,在 wp_posts 表里存在一个字段:post_type,从字面上理解这个字段肯定跟“日志”和“页面”的判断有关。于是我就查看了一下本地的 数据库,果然在 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.

  • 原文链接:
  • 转载原创文章请注明:

本文评论 3 comments

  1. 辐射鱼 说:

    热门与否,我觉得应该用点击量+评论数+引用量来加权计算,单独使用某种指标都会有各种各样的问题

  2. 万戈 说:

    你实在太帅了!我被这个问题困扰了很久,终于得到解决了

Leave a comment

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。