当前位置: DBARoad > 系统及网站 > 文章正文

显示最近浏览最多的文章

                    作者 :OoNiceDream【转载时请务必以超链接形式标明文章原始出处和作者信息】
                    链接:http://www.dbaroad.me/archives/2010/02/recent_most_view.html

博客首页显示的热点文章,用的是wp-postviews插件,是按全部日志浏览最多来排序的,像我这样的博客,时间一长,一般就不再变化了,因此想让它按最近一段时间内浏览最多的日志来排序。

通过搜索、调试,终于找到了解决办法:
在postviews.php页面中,找到function get_most_viewed这一段,其中有一段SQL就是查询出浏览最多的日志:

$most_viewed = $wpdb->get_results("
SELECT DISTINCT $wpdb - > posts.*, (meta_value + 0) AS views
  FROM $wpdb - > posts
  LEFT JOIN $wpdb - > postmeta ON $wpdb - > postmeta.post_id =
                                  $wpdb - > posts.ID
 WHERE post_date < '".current_time(' mysql ')."'
   AND $where
   AND post_status = 'publish'
   AND meta_key = 'views'
   AND post_password = ''
 ORDER BY views DESC LIMIT $limit
");

可以看到WHERE条件中有post_date < '".current_time(' mysql ')."' 这一条,就是用于限制日志发布日期的。因此,只要修改这个条件,使发布日期大于一个过去的时间就可以了。
以下SQL均可以用来替换:

SELECT DATE_SUB( max( post_date ) , INTERVAL 60 DAY ) FROM wp_posts
 
SELECT max( post_date ) - INTERVAL 60 DAY FROM wp_posts

修改后如下:

$most_viewed = $wpdb->get_results("
SELECT DISTINCT $wpdb - > posts.*, (meta_value + 0) AS views
  FROM $wpdb - > posts
  LEFT JOIN $wpdb - > postmeta ON $wpdb - > postmeta.post_id =
                                  $wpdb - > posts.ID
 WHERE post_date >=
       (SELECT DATE_SUB(max(post_date), INTERVAL 60 DAY) FROM wp_posts)
   AND $where
   AND post_status = 'publish'
   AND meta_key = 'views'
   AND post_password = ''
 ORDER BY views DESC LIMIT $limit
");

— The End —

关键字:
喜欢DBARoad的文章,那就通过 RSS Feed 功能订阅阅读吧!

我要评论

*

* 绝不会泄露


  • 订阅


      抓虾
      google reader
      my yahoo
      bloglines
      鲜果
      有道

站内搜索



返回首页 | 关于我 | 联系我 | 广告合作 | 网站地图 | 友情链接 | 版权声明 |