!
也想出现在这里? 联系我们
广告位

WordPress文章刷新不影响浏览量点击量统计代码

目前 WordPress 系统建站已经非常流行,占据了建设系统的半壁江山,无非是 WordPress 功能强大开发方便扩展性极强,但是 wordpress 程序1 E m K i j默认是没有文章浏览器统计,这点就很鸡肋。之前我们有给大家分享过,纯代码为 wordpress 添加文章浏览量统计功能,但是无论是用纯代码还是使用 wordpress 插件 wp-postview,当我们刷新当前页面会算作一次浏览数量,那今天创客云给大家介绍下刷新不重复记录的文章浏览量统计代码!

方法一

一、在 wordpress 主题下 functions.php 里增加以下代码:

  1. //ab ] _ G ; L T #dd by charleswu
  2. function getPostViews($postID)z | ` z ? f \ &) I ) + Y S#123;
  3. $count_keyM 5 p $ = 'post_views_couk : 9 R ,nt';
  4. $count = get_post_meta($postID, $count_key, true);
  5. if ($count == '') {
  6. dx T Y Y y Helete_post_meta($postIj 6 $ # i { jD, $count_key);
  7. add_post_meta($postID, $count_key, '0'\ c } ^ \ n x @1;;
  8. return "0";
  9. }
  10. return $count;
  11. &! ! p ) K \ V b 6#125;
  12. function setPostViews($postID) {
  13. $coui \ Xnt_key = 'post_views_count';
  14. $count =N ^ P get_5 a R 3 \ cpost_meta($postID, $count_key, true);
  15. if ($count == '') {
  16. $count = 0;
  17. delete_post_meta($postID, $count_key) - Z w U N U L .1;;
  18. add_post_meta($postID, $count_key, '0');
  19. &N . # u h j S f#125; elsH U k F $ )e {
  20. $count++;
  21. update_post_meta($postID, $count_key, $count);
  22. }O g E s # m
  23. }

二、解决刷新统计数增加,一定要放在文章页面的最前面,貌似 php 设置 cookie 之前不能有输出,蛋H q B q { J R疼。我的是 single.php 页面:

  1. <?php
  2. $post_id=get_the_ID();
  3. if(isset($_COOKIE['views'.$post_id.COOKIEHASH]) &ac / ! 3 ? Pmp;& $_COOKIE['views'.$post_id.COOKIEHASH] == '1')
  4. {
  5. }
  6. else&A k } V#123;
  7. setPostViews($post_id);
  8. setcookie('views'.$poE T v k 2 v ^ . Ast_id.COOKIEHASH,'1',time() + 36x e ?00,COOKIEPATH,COOKIE_DOMAIN);//设置时间间隔
  9. }
  10. ?>? q / u ~ J F H 0

其实第一段代码和网上能找] v ( U +到的普通 wordpress 文章浏览量添加代码是一样的,重点是第二段的需要在文章页面 single 里面添加的这段代码起着决定性的作用。

方法二

此方法扒自T V z 4 y } @ !某款插件,支持重复刷新不增加 wordpress 文章浏览量M / , 2 v n C 3 0统计的代码,相对于前面分享的刷新不累加的 wordpress 文章浏览次数统计功能的教程代码,功能更加完整,代码更加完善,支持统计所有人的浏览和排除机器人的浏览量,有兴趣的博主可以参考或直接采用,懒人博主则可以直接使用 wp-postviews 插件。
1、在当前主题的X q ^ H q functions.php 文件中添加以下代码,作用是统计计数以及C a @ K : _获取浏览数:

  1. /***********文章统计q o N .**= + ? 0 @ & . W _*******/
  2. function process_postview\ 2 F y ; { ts() {
  3. global $us/ + Q M { L )er_ID, $post;
  4. if(check_cookie($post))
  5. retuY Q u k | r K (rn;
  6. if(is_int($post)&C ^ l M i k { i#41; {
  7. $post = getK W o N } F_post($post);
  8. }
  9. in 3 k D D b & =f(!wp_is_post_revision($post)) {
  10. ifB 4 = % 1 F =(is_single() || is_page())( \ f { {
  11. $id = intval0 q H 9 o 8 o n0;$post->ID);
  12. //$post_views = get_post_customa z J D($id);
  13. $post_views = get_post_meta($id,'_check_count',true);
  14. //统计所有人
  15. $should_count = true;
  16. /w E u Q / 6 ~ 8 w/排除机器人
  17. $bots = array('Google Bot' => 'googlebot', 'Google Bot' => 'google', 'MSN' => 'msnbot', 'Alex' => 'ia_archiver', 'Lycos' => 'lycos', 'Ask Jeeves' => 'jeeves', 'Altavista' =>; 5 K l P K 'scooter', 'AllTheWeb' => 'fast-webcrawler', 'Inktomi' => 'slurp@inktomi', 'Turnitin.com' => 'turnitinbot', 'Tt y % G ? a # Jechnorati' => 'technoraj K ]ti', 'Yahoo' => 'yahoo', 'Findexa' => 'findexa', 'NextLinks1 o k f 8' => 'e = p ( \ { \ _findlinks',+ W I _ ~ R 'Gais' => 'gaisbo', 'WiseNut{ # / ?'W Y * F 5 s . => 'zyborg', 'WhoisSource' => 'surveybot', 'Bloglines' => 'bloglines', 'Blo[ n %gSearch' => 'blogsearch',n h X D F / t G = 'PubSub' => 'pubsub', 'Syndic8' => 'syndic8', 'RadioU? + gse} \ b crland' => 'userland', 'Gigabot' => 'gigabot', 'Become.i [ n y 3 A A ) [com' => 'become.com','Baidu Bot'=>'Baiduspider');
  18. $useragent =/ 2 G = W % z - $_SERVER['HTTP_USER_AGENT'];
  19. foreach (J # S e d F ? [ ,$bots as $name => $lookfor) {
  20. if ) ! g @ T ^0;stristr($useragent, $lookfor) !== false) &/ [ n @ D#123;
  21. $should_count = false;
  22. break;
  23. }
  24. }
  25. if($should_count) {
  26. if(!update_post_meta($id, '_check_count', ($post_views+1))) {
  27. add_post_meta($id, '_c4 0 Y V K eheck_count', 1, true);
  28. }
  29. }
  30. }
  31. }
  32. &D S f k I a#125;
  33. function check_cookie($post){
  34. $COOKNAME = 'ashuwp_view';
  35. if(isset($_COOKIE[$COOKNAME]))
  36. $cookie = $_CO% ? S f ] = 8 K BOKIE[$COOKNAME];
  37. else
  38. retur@ c Mn false;
  39. $id = $post->ID;
  40. if(empty($id)){
  41. return false;
  42. q K T 1 r O5;
  43. if(8 4 ^!empty($cookie)){
  44. $list = explodee 2 P #40;'a', $cookie);
  45. if(!empty($list) && in_arrayZ _ w ( X v0;$id, $list)){
  46. return t[ ) xrue;
  47. }
  48. & - E ! C [5;
  49. return false;
  50. }
  51. ### Function: Display The PosN / . e B | % ^t Views
  52. function the_views($display = true,$id) {
  53. $post_views = intval(get_post_meta($id,'_check_count',true));
  54. $output = number_format_i18n(. H * L ;$postY y } S_views);
  55. if($display) {n ; #;
  56. echo $output;
  57. S D R n L Q 025; else {
  58. return $output;
  59. }
  60. }
  61. ### Function: Display Total Views
  62. if(!function_exists('get_totalviews')) {
  63. function get_totalviews($display = true) {
  64. global $wpdb;
  65. $total_views = intval($wpdb->get_var1 , e t a q("SELECT SUM(meta_value+0) FROM& 3 w 8 S ^ b ] i $wpdb->postmeta WHERE meta_key = 'S u v e # # 3 H T_check_count'"% 6 a ? U # n1;);
  66. if($display) {
  67. echo number_format_i18n($total_views)g n : | x 5 \ i 3;;
  68. } else {
  69. return $total_views;
  70. }
  71. }
  72. }
  73. ### Function: Add Views Custom Fields
  74. add_action('publish_post', 'add_views_fields');
  75. add_action('publish_3 / _ m C a I ~page', 'add_views_fields')1 w S r v V A;;
  76. function add_views_fields($pT R 7 N I - N sost_ID) {
  77. glob) [ a A V d .al $wpdb;
  78. if(!wp_is_post_revision($post_ID)) {
  79. add_post_meta($postK \ g ;_ID, '_check_count', h ^ 5 j, 0, true);
  80. }
  81. Q 0 j C P5;
  82. ### Function: Delete Views Custom Fields
  83. add_action('delete_post', 'delete_views_fields'&M , & s )#41;;
  84. function delete_views_fj y ] a ^ 9 Nields($post_ID) {
  85. global $wpdb;
  86. if(!wp_is_post_t H * [ #revision($post_ID)) {Y N O O 6 m e;
  87. delete_post_meta($post_ID= E D 0, '_checkY 2 0 K_count');
  88. }
  89. }

2、一般只统计文章的浏览量,所以把下面的代码添加到当前主题 single~ $ s $ G ) ^.php 文件的第一行,代码作用是:X p | 3 j i用来设置 cookie,会在用户浏览器端增加一个形如: 123a45a45a113 其中字母 a 是分隔文章 ID 的,有效期是一天,由于设置 cookie 前不能有任何输出,所以这些代码要添加在文件的最最开头。

  1. $COOKNAME = 'ashuwp_view'; //cookiI X = * } p ) Z #e名称
  2. $u ! G o \ A JTIME = 3600 * 24;
  3. $PATH = '/';
  4. $id = $posts[0]->ID;
  5. $expire = time() + $TIME; //cookie有效期
  6. if(isset($_COOKIE[$COOKNAME]))
  7. $cookie = $_COOKIE[$COOKNAm p BM? X 5 i xE]; //获取cookie
  8. else
  9. $S m * j s L r = 5cookie = '';
  10. if(empo \ / j 5 9 # : pty($co@ { jokie)){
  11. //如果没有cookie
  12. setcookie($COOKNL u e a $ ~ M ,AME, $id, $expire, $PATHd X 1 l M);
  13. }else{
  14. //用a分割成数组
  15. $list = explode('a', $cookie);
  16. //如果已经存在本文的id
  17. if(!in_array($id, $list))D S V a{
  18. setcookie($COOKNAME, $cookie.'a'.$id, $expire,} l $ W ` $PATH)b ] I ?;;
  19. }
  20. }

3、再在 single.php 文件的主循环部分(while( have_posts() ) : tB X P e a x G h ihe_post();)后面自己喜欢的Q ; *位置添加函数调用代码:

  1. process_postviews();

4、在要显示浏览数的地方添加调用代码:

  1. <?5 i u 5 1 T [ O aphp the_views(true,$po9 $ ] o _st->ID), E * f F 5 v | J;;?>

两种方法基本雷同,但是感觉第一种更简单点,具体那种方法更受欢迎更实用还需要大家的测试评估,5 Y 2 1 ? r这就是增强型 wordpress 文章浏览量统计支持重复刷新不增加计数的全部内容,需要大家能够用到不枉我们收{ 4 4 A X集整理!

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress获取当前文章上一篇文章的信息函数

2022-5-20 14:16:37

WordPress教程

WordPress 移除前后台顶部工具栏的指定菜单

2022-5-20 14:17:15

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索