網生@誌 | zEUS.'Blog

首页 » Wordpress研究 » 2009-06-2 »

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

Tag: ,

这是一个困扰我很久的问题,D&Z Theme 主题侧栏顶部 Tab 栏里的“热评日志”列表中排名前2位的文章是“给我留言”和“主题模板”,而实际上这两篇“文章”是开启了评论的 页面而非日志。所以从严格的意义上来讲,这种排列是有误的。于是我就琢磨如何在“热评日志”的统计中去掉“页面”,其实理论上办法是很简单的——“热评日志”是我从 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.

« »

已经有90人发表了评论

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

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

文章反相链接 Pingback/Trackback

  1. downtown dentist toronto
  2. Dallas Senior Portrait Photographer
  3. best seo blog
  4. Dallas Family Portrait Photographer
  5. James Bond Books
  6. Dallas Wedding Photographers
  7. Dallas Boudoir Photographer
  8. All New Kia Picanto
  9. Dallas Advertising
  10. servinion

发表您的看法