使用wp-postviews显示指定时间段内浏览最多文章

一直使用wp-postviews这个插件来帮助显示文章被浏览的情况。并且可以用它来实现通过浏览量显示热门文章。但比较郁闷的是不能设置所显示的文章的发布时间段,造成一些陈旧的信息始终挂在首页上。

检索了一番得知,其实postviews这个插件在1.30以前的版本里面其实是曾经有过显示指定时间段内浏览最多文章的功能的!在它的1.30版本的changelog里面有提到:NEW: Should Work With WP-Cache Or WP-SuperCache。不知道是不是为了兼容这些其它插件所以舍弃了这个功能。

反正我并没有在用这两个插件,而且有前人的实践经验,我也去下载了一个1.20版本的postviews,打开postviews.php文件,查找函数get_timespan_most_viewed,然后把它所在的那一大段整个COPY到目前1.50版本的wp-postviews.php中

### Function: Get TimeSpan Most Viewed - Added by Paolo Tagliaferri (http://www.vortexmind.net - webmaster@vortexmind.net)
function get_timespan_most_viewed($mode = '', $limit = 10, $days = 30, $display = true) {//$limit=10,这个10可以修改为希望显示的文章数量的上限。$days=30,这个30也可以修改为希望选取文章发布日期距今天数,写30,就是一个月内的。
	global $wpdb, $post;
	$limit_date = current_time('timestamp') - ($days*86400);
	$limit_date = date("Y-m-d H:i:s",$limit_date);
	$where = '';
	$temp = '';
	if(!empty($mode) && $mode != 'both') {
		$where = "post_type = '$mode'";
	} else {
		$where = '1=1';
	}
	$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 post_date > '".$limit_date."' AND $where AND post_status = 'publish' AND meta_key = 'views' AND post_password = '' ORDER  BY views DESC LIMIT $limit");
	if($most_viewed) {
		foreach ($most_viewed as $post) {
			$post_title = get_the_title();
			$post_views = intval($post->views);
			$post_views = number_format($post_views);
			$temp .= "
 
	<li><a href="\">$post_title</a> - $post_views ".__('views', 'wp-postviews')."</li>
 
 
";//显示的样式可以在这里根据需要调整。
		}
	} else {
		$temp = '
 
	<li>'.__('N/A', 'wp-postviews').'</li>
 
 
'."\n";
	}
	if($display) {
		echo $temp;
	} else {
		return $temp;
	}
}

然后,在适当的位置添加:

 
<ul>
 
</ul>

以上参考自:http://www.caxblog.com/get-timespan-most-viewed-wp-postviews/
还看到一篇:《修改 wordpress wp-postviews 插件, 让它支持最近最多浏览 widget》-http://blog.chenlb.com/2009/04/modify-wordpress-wp-postviews-support-widget-recent-most-view.html,使用这个方法后可以直接在widget中设置,不错啊~
另外看到不用插件来统计页面浏览量的方法,不过要改数据库和wordpress里的post-template.php文件,明显不适合偶这样的初级用户,哈哈哈,景仰一下了:http://notan00b.com/2009/07/wordpress-page-views-hack/





本文来源:随便翻翻
原文地址:http://anyff.com/2009/12/postviews-get-timespan-most-viewed/

你可以留言,或者trackback 从你的网站

9 条评论

  1. 378q 说道:

    :lol: 实践中的经验最宝贵

  2. 卢松松 说道:

    文章列表插件也可以嘛

  3. 小明猪 说道:

    难道是个PHP高手~? :eek:

  4. 万戈 说道:

    wp-postviews是很强大的插件啊

Leave a Reply