填写您的邮件地址,订阅我们的精彩内容:

为wordpress主题添加文章访问次数统计功能

944

一些插件实现了为wordpress文章统计访问次数的功能,例如postview,本文来用简单的代码来实现这一功能。

在wordpress主题文件functions.php中增加下面三个函数:

[code lang=”php” line=”1″]
/**
* 名称:wordpress文章访问次数
* 作者:否子戈
* 主页:http://www.utubon.com
* 用法:将这段代码放置于functions.php中,将set_view_count函数按照下文的方法加入文章single.php开头
*/

function get_view_count($post_id = ”){
if($post_id == ”)$post_id = get_the_ID();
$count_key = ‘查看次数’;
$count = get_post_meta($post_id, $count_key, true);
if($count == ”){
delete_post_meta($post_id,$count_key);
add_post_meta($post_id,$count_key,’0′);
return ‘查看0次’;
}
return ‘查看’.$count.’次’;
}
function the_view_count($post_id = ”){
if($post_id == ”)$post_id = get_the_ID();
echo get_view_count($post_id);
}
function set_view_count($post_id = ”){
if(!is_single())return;
if(isset($_COOKIE[‘view_count_’.$post_id.COOKIEHASH]) && $_COOKIE[‘view_count_’.$post_id.COOKIEHASH] == ‘1’)return;
if($post_id == ”)$post_id = get_the_ID();
$count_key = ‘查看次数’;
$count = get_post_meta($post_id,$count_key,true);
if($count == ”){
delete_post_meta($post_id,$count_key);
add_post_meta($post_id,$count_key,’1′);
}else{
$count ++ ;
update_post_meta($post_id,$count_key,$count);
}
setcookie(‘view_count_’.$post_id.COOKIEHASH,’1′,time() + 3600,COOKIEPATH,COOKIE_DOMAIN);
}
[/code]

利用wordpress的post_meta功能,我们能轻松的实现为文章增加一种属性,例如赞成、反对、喜欢、访问者等等,总之我们就是利用它,实现了为文章添加访问次数的功能。

第一个函数是获取访问次数,第二个函数是将次数显示出来,第三个函数是用来增加访问次数的。

在主题single.php的get_header()前面使用第三个函数,只有在get_header()之前调用它,cookie才能生效。

[code lang=”php” line=”1″]
ID);
if(!have_posts()){get_404_template();return;}
get_header();the_post();
?>
[/code]

这段代码还加入了用cookie来记录访问的时间间隔,在一小时内刷新这篇文章不会统计为多个访问,只会被算作一次访问。

还有一个问题,如果你的wordpress开启了缓存怎么办,缓存格式为html的博客是不会执行php函数的,也不会调用数据库,因此我们要用到ajax的方法,即使访问html文档,也能同时激活一次php执行程序。postview有一个升级版插件postajaxview,在显示的时候,通过ajax执行某个php程序,得到数据并返回显示,当访问某篇文章时通过ajax执行另一个php程序,以增加访问次数。由于不同的博客使用的脚本版本不同,本文就只说思路,不贴代码了。

下面我简单说几句