• 注册
  • 转载专家
    个人签名:TA有点懒了,什么都没有写。
    关注1 粉丝1 喜欢0内容254
    河南·郑州
    全部文章 全部文章 关注:0 内容:1065

    WordPress代码实现统计阅读数【转】

  • 查看作者
  • 打赏作者
  • 拉黑名单
  • 当前位置: 在这 > 全部文章 > 正文
  • 全部文章
    • LV.1 新手

      经常看到有WordPress站长在到处找统计文章阅读数量的插件,其实一般国内的主题都自带阅读数量统计,国外的就不知道了,我想应该很少有的,毕竟国外的WordPress主题大部分都是非常精简的,比如WordPress官方给的主题。那么想要给自己用的WordPress主题增加一个统计文章阅读数量的功能很困难吗?答案肯定是十分简单,仅仅只需3步即可拥有这个功能。

      WordPress代码实现统计阅读数【转】

      WordPress代码实现统计阅读数

      不过在实现这个功能之前,必须提醒各位,统计文章阅读数量的功能函数不会被WordPress的对象缓存机制识别,也就是说不会被缓存,加了这个功能会导致页面的sql查询数量增加1次,如果你对查询数量有所要求,还对这个数量的准确性有要求的话,还是建议不要使用了。当然如果你必须要这个功能,但对数量准确性要求不是特别高,那么可以参考memcached缓存将这个数据存在内存中,等它累计10次、20次再写入数据库中,这样如果memcached服务被重启、刷新都将丢失一些阅读量。具体如何选择看诸位自己,这里提供方法,不包括优化。

      实现原理

      通过WordPress官方提供的add_post_meta方法,将用户自定义字段存储在wp_postmeta表中,在用户需要的时候通过get_post_meta方法获取,需要修改时使用update_post_meta方法修改更新。详细使用方法见:WordPress函数add_post_meta详解

      实现方法

      在你的主题functions.php文件中插入如下代码:

      记录文章阅读数量

      \\记录文章阅读数量
      function _post_views_record() {
      	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);
      			}
      		}
      	}
      }

      获取文章阅读数量

      \\获取文章阅读数量
      function _get_post_views($before = '阅读(', $after = ')') {
      	global $post;
      	$post_ID = $post->ID;
      	$views = (int) get_post_meta($post_ID, 'views', true);
      	return $before . $views . $after;
      }

      然后打开主题的header.php文件,在头部加入如下代码,调用记录阅读数量方法:

      <?php _post_views_record(); ?>

      这样每次打开页面都将会执行这个方法,自动将阅读数记录下来。

      然后在文章列表模板,或者文字页模板single.php中你想显示阅读数量的位置,添加获取文章阅读数量的方法。

      <?php echo _get_post_views();?>

      好了,到此你就已经成功集成了文章阅读数量的统计功能,在做这些操作前记得先打个磁盘快照,或者备份下文件,如果操作失误导致数据丢失,本站概不负责。

      请登录之后再进行评论

      登录
    • 帖子间隔 侧栏位置: