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

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

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

<br /> /**<br /> * 名称:wordpress文章访问次数<br /> * 作者:否子戈<br /> * 主页:http://www.utubon.com<br /> * 用法:将这段代码放置于functions.php中,将set_view_count函数按照下文的方法加入文章single.php开头<br /> */</p>
<p>function get_view_count($post_id = &#8221;){<br />  if($post_id == &#8221;)$post_id = get_the_ID();<br />  $count_key = &#8216;查看次数&#8217;;<br />  $count = get_post_meta($post_id, $count_key, true);<br />  if($count == &#8221;){<br />   delete_post_meta($post_id,$count_key);<br />   add_post_meta($post_id,$count_key,&#8217;0&#8242;);<br />   return &#8216;查看0次&#8217;;<br />  }<br />  return &#8216;查看&#8217;.$count.&#8217;次&#8217;;<br /> }<br /> function the_view_count($post_id = &#8221;){<br />  if($post_id == &#8221;)$post_id = get_the_ID();<br />  echo get_view_count($post_id);<br /> }<br /> function set_view_count($post_id = &#8221;){<br />  if(!is_single())return;<br />  if(isset($_COOKIE[&#8216;view_count_&#8217;.$post_id.COOKIEHASH]) &#038;&#038; $_COOKIE[&#8216;view_count_&#8217;.$post_id.COOKIEHASH] == &#8216;1&#8217;)return;<br />  if($post_id == &#8221;)$post_id = get_the_ID();<br />  $count_key = &#8216;查看次数&#8217;;<br />  $count = get_post_meta($post_id,$count_key,true);<br />  if($count == &#8221;){<br />   delete_post_meta($post_id,$count_key);<br />   add_post_meta($post_id,$count_key,&#8217;1&#8242;);<br />  }else{<br />   $count ++ ;<br />   update_post_meta($post_id,$count_key,$count);<br />  }<br />  setcookie(&#8216;view_count_&#8217;.$post_id.COOKIEHASH,&#8217;1&#8242;,time() + 3600,COOKIEPATH,COOKIE_DOMAIN);<br /> }<br /> 

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

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

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

<br /> ID);<br /> if(!have_posts()){get_404_template();return;}<br /> get_header();the_post();<br /> ?&gt;<br /> 

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

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

0

评论0

请先

没有账号? 注册  忘记密码?

社交账号快速登录