wordpresss主题功能集成(十六):无插件实现浏览次数统计

关于给wordpress添加浏览次数统计,网上教程到处是,到底原创是谁,早已不知道了,不过这一个系列的教程,我还是要加上这一篇。原理很简单,通过给文章添加一个自定义字段来保存浏览次数数据,我们需要两个函数-设置浏览次数、获取浏览次数。在主题的functions.php中添加两个函数的代码

  1. //获取浏览数-参数文章ID      
  2. function getPostViews($postID){      
  3.     //字段名称      
  4.     $count_key = 'post_views_count';      
  5.     //获取字段值即浏览次数      
  6.     $count = get_post_meta($postID$count_key, true);      
  7.     //如果为空设置为0      
  8.     if($count==''){      
  9.         delete_post_meta($postID$count_key);      
  10.         add_post_meta($postID$count_key, '0');      
  11.         return "0";      
  12.     }      
  13.     return $count;      
  14. }      
  15. //设置浏览数-参数文章ID      
  16. function setPostViews($postID) {      
  17.     //字段名称      
  18.     $count_key = 'post_views_count';      
  19.     //先获取获取字段值即浏览次数      
  20.     $count = get_post_meta($postID$count_key, true);      
  21.     //如果为空就设为0      
  22.     if($count==''){      
  23.         $count = 0;      
  24.         delete_post_meta($postID$count_key);      
  25.         add_post_meta($postID$count_key, '0');      
  26.     }else{      
  27.         //如果不为空,加1,更新数据      
  28.         $count++;      
  29.         update_post_meta($postID$count_key$count);      
  30.     }      
  31. }    


第二步:

打开主题的single.php文件,在the_post()函数的后面添加设置浏览次数函数,代码效果如下:

  1. <?php if(have_posts()): while(have_posts()):the_post();  setPostViews(get_the_ID()); ?>   

这样在每次请求这篇文章的时候,都执行设置浏览次数的函数,get_the_ID()函数用来获取文章ID,你也可以使用$post->ID来代替。

获取浏览次数

只需要在你需要显示浏览次数的地方添加代码:

  1. <?php echo getPostViews(get_the_ID()); ?>次点击    

只要有了浏览次数,即给文章添加了一个自定义字段,在后台编辑文章的下面,如果显示了自定义栏目,即可看到:
wordpress自定义字段实现浏览次数

不过这样添加有一个不科学的地方,即没刷新一次浏览次数都加1,这样浏览次数可能会有点虚高,而且还可以很方便的修改,所以这个浏览次数也不能当真

已有15条评论

  1. 王子
    王子 : 回复

    我去,我用这玩意儿直接整个网站打不开报错

    • 阿树工作室
      阿树工作室 回复王子: 回复

      1. 检查是不是自己代码添加错误。
      2. 检查主题是否已经存在这个函数导致冲突。
      3. 报错代码百度一下。

  2. 任漂零
    任漂零 : 回复

    请教:分类目录页要实现浏览次数,怎么弄呢?

    • 阿树工作室
      阿树工作室 回复任漂零: 回复

      文章的浏览次数用自定义字段实现,,,分类也可以用分类的自定义字段实现。
      与文章自定义字段相关的函数是get_post_meta、add_post_meta、delete_post_meta、update_post_meta。
      对应的分类自定义字段也有相关函数 get_term_meta、add_term_meta、delete_term_meta、update_term_meta。

  3. Bruce
    Bruce : 回复

    你好,首先谢谢这段代码和楼上的问题,帮大忙了。
    刷新页面views的次数就会加1的问题,我发现如果把setPostViews(get_the_ID());放在array之前,刷新页面的时候views次数就不会加1,不知道放在这个位置科学不科学;还有就是你给楼上提供的方法,第一种我不知道为什么没有用,第二种是生效的。。。

  4. 邦林织梦
    邦林织梦 : 回复

    按照点击次数排列

    • 阿树工作室
      阿树工作室 回复邦林织梦: 回复

      以本文为例,本文中文章保存浏览次数的字段名称为post_views_count。按浏览树获取文章范例(请替换代码中引号):

      1. $args = array(   
      2.   ‘meta_query’ => array(   
      3.     array(   
      4.       ‘key’ => ‘post_views_count’   
      5.     )   
      6.    ),   
      7.   ‘orderby’ => ‘meta_value’,   
      8.   ‘order’=>’DESC’   
      9. );   
      10.   
      11. /*或者  
      12. $args = array(  
      13.   ‘meta_query’ => array(  
      14.     array(  
      15.       ‘key’ => ‘post_views_count’,  
      16.       ‘type’=>’NUMERIC’  
      17.     )  
      18.    ),  
      19.   ‘orderby’ => ‘meta_value_num’,  
      20.   ‘order’=>’DESC’  
      21. );  
      22. */  
      23. query_posts($args);  
  5. 邦林织梦
    邦林织梦 : 回复

    怎么 调用统计排行榜啊

  6. 觅珍网
    觅珍网 : 回复

    树哥,你好,我看了你的浏览量统计是不会虚高的,刷新也不会+1,请问你是怎么实现的呢,另外后台发邮件功能好像也不行哦,按照你的教程设置的

  7. dmj
    dmj : 回复

    貌似有错误哎,点击一次,浏览次数增加两次…我把 $count++改成 ++$count了,用着还行。

    • 阿树工作室
      阿树工作室 回复dmj: 回复

      囧。。。不会真的有错误吧。。。我一直用着没问题啊。。。。$coun++和++$count在一个单独的语句里貌似没啥区别吧

  8. 马潇湘
    马潇湘 : 回复

    第一次见这么干净的博客 请问博主 你用提代码高亮是什么插件 还有就是 有没有方法让浏览量不虚高 同一个读者刷新也算一次 而且不计算管理员…

    • 阿树工作室
      阿树工作室 回复马潇湘: 回复

      代码高亮显示在下一篇教程中,浏览量虚高也不是什么坏事,要解决这个问题还有待研究。。。

发表评论