显示最近浏览最多的文章
作者 :OoNiceDream【转载时请务必以超链接形式标明文章原始出处和作者信息】
链接:http://www.dbaroad.me/archives/2010/02/recent_most_view.html
链接: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 —
关键字: wp


站内搜索