调用WordPress函数统计文章访问量及PHP原生计数器的实现


Posted in PHP onMarch 21, 2016

1.首先介绍WordPress的两款功能强大的插件:

(1)Count per Day 是一个非常强大的访客数量统计插件,可以统计每天、昨天、每周、每月等等的访客数量(根据IP进行统计),统计在线访客数、浏览器、搜索词等等,自带多种调用简码、模板标签以及小工具,方便你自行调用和集成。
(2)StatPressCN,实时显示blog的访问统计,完美支持中文(如搜索关键字等)。它可以集中显示来访者、爬虫、搜索关键字、订阅统计、浏览器、操 作系统等信息,方便您及时把握blog的访问情况,同时还提供了定制输出、统计权限、信息存储期等个性化设置选项。另外,您可以随时掌握blog被订阅的 情况并把它放在侧栏中显示,还可以获得所有页面(包括post、page、archive以及homepage)被访问的情况,还可以在侧栏中显示 blog中被访问最多的热门文章等。 增加了对中国大陆和港台地区的本地化语言支持(目前支持wp-config.php中设置为zh_CN、zh_HK和zh_TW)。
安装插件的方式固然功能很强大,但是弊端也是显而易见的——容易影响网页加载速度,所以我放弃了这种方式。

2.其次,是简单的几条代码,通过统计网页刷新的次数来记录访客数的,把以下代码放到function.php中:

/* 访问计数 */
function record_visitors()
{
 if (is_singular())
 {
 global $post;
 $post_ID = $post->ID;
 if($post_ID)
 {
 $post_views = (int)get_post_meta($post_ID, 'views', true);
 if(!update_post_meta($post_ID, 'views', ($post_views+1)))
 {
 add_post_meta($post_ID, 'views', 1, true);
 }
 }
 }
}
add_action('wp_head', 'record_visitors');
 
/// 函数名称:post_views
/// 函数作用:取得文章的阅读次数
function post_views($before = '(点击 ', $after = ' 次)', $echo = 1)
{
 global $post;
 $post_ID = $post->ID;
 $views = (int)get_post_meta($post_ID, 'views', true);
 if ($echo) echo $before, number_format($views), $after;
 else return $views;
}

然后在需要显示的界面,比如footer.php或header.php等页面调用:

<?php post_views(' ', ' 次'); ?>

3.PHP原生实现访问计数器示例:
index.php

<?php
 include("counter.php")
?>

<html>
 <head>
 <title>访问计数器</title>
 </head>

 <body>
  <center>
  <h1>访问者计数器</h1>
  <U>                 <!--下划线-->
  <font size="6" face="隶书" >你是第</font>
  <B>
   <font size="9" face="Verdana" color="#ffcc00">
   <?php Counter() ?>             <!--调用函数-->
   </font>
  </B>
  <font size="6" face="隶书" >个访问者</font>
  </U>
  </center>
 </body>
</html>

counter.php

<?php
 //$five,$four 等变量表示零的个数,放在数字前边构成6位
 function Counter()
 {         //定义函数
  $five = "00000";          //声明变量
  $four = "0000";
  $three = "000";
  $two = "00";
  $one = "0";
  $counter = "record.dat";      //存放访问数的目的文件,.dat格式
  if(!file_exists($counter))     //判断文件是否存在
  {
   $counter = fopen($counter,"w");
   fputs($counter,"0");      //写入文件
   fclose($counter);
  }
  else
  {
   $fp = fopen($counter,"r+");
   $num = fgets($fp,"1024");    //如果文件存在则读出文件,并加 1
   $num = $num + 1;
   if($num < 10)
    print "$five"."$num";
   elseif($num < 100)
    print "$four"."$num";
   elseif($num < 1000)
    print "$three"."$num";
   elseif($num < 10000)
    print "$two"."$num";
   elseif($num < 100000)
    print "$one"."$num";
   else
    print "$num";
  }
  $fp = fopen($counter,"w");
  fputs($fp,"$num");
  fclose($fp);
 }
?>

调用WordPress函数统计文章访问量及PHP原生计数器的实现

PHP 相关文章推荐
PHP5在Apache下的两种模式的安装
Sep 05 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
PHP笔记之:基于面向对象设计的详解
May 14 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 PHP
php中异常处理方法小结
Jan 09 PHP
php实现XSS安全过滤的方法
Jul 29 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
php+ajax实现异步上传文件或图片功能
Jul 18 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
Laravel如何同时连接多个数据库详解
Aug 13 PHP
php创建多级目录与级联删除文件的方法示例
Sep 12 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
Mar 21 #PHP
PHP编程中尝试程序并发的几种方式总结
Mar 21 #PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
Mar 21 #PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
Mar 21 #PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
Mar 21 #PHP
Zend Framework实现多文件上传功能实例
Mar 21 #PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
Mar 21 #PHP
You might like
PHP伪静态Rewrite设置之APACHE篇
2014/07/30 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
Python 函数基础知识汇总
2018/03/09 Python
python 生成图形验证码的方法示例
2018/11/11 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
Python使用进程Process模块管理资源
2020/03/05 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
2020/08/02 Python
pandas 按日期范围筛选数据的实现
2021/02/20 Python
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
学期研究性学习个人的自我评价
2014/01/09 职场文书
集体备课反思
2014/02/12 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
债务授权委托书范本
2014/10/17 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
退休教师追悼词
2015/06/23 职场文书
2015年中秋节主持词
2015/07/30 职场文书