用 WordPress 搭建网站已经有半年了,统计文章的浏览量一直用的是 WP-PostViews,很简单,很实用。网站最重要的一点就是访问速度,也经常会用 p3-profiler 来检测哪些插件占用资源较多,选择把一些不是很必要且占资源的插件删除。

WP-PostViews 资源占用也挺多,最重要的是能用代码实现就不用插件,所以一直想着用代码来实现文章浏览统计。

而一直用插件实现文章统计,用代码后之前的浏览统计是否会归零,曾有过这样的担心。

在网上搜索了下,代码是从老外的网站复制过来,也通过自己的实践与简单的修改,成功的实现代码统计文章浏览量,也不用担心之前的统计归零,可以延续之前的浏览量继续统计。

WP-PostViews 插件会自动生成 views 自定义域,所以我们只需再次创建自定义域 views 就完美解决那个担心的问题。

首先,需要创建相关的函数。你可以把下面的代码粘贴到你所用主题的 functions.php 文件里。

  1. function getPostViews($postID){
  2.     $count_key = 'views';
  3.     $count = get_post_meta($postID, $count_key, true);
  4.     if($count==''){
  5.         delete_post_meta($postID, $count_key);
  6.         add_post_meta($postID, $count_key, '0');
  7.         return "0 次浏览";
  8.     }
  9.     return $count.' 次浏览';
  10. }
  11. function setPostViews($postID) {
  12.     $count_key = 'views';
  13.     $count = get_post_meta($postID, $count_key, true);
  14.     if($count==''){
  15.         $count = 0;
  16.         delete_post_meta($postID, $count_key);
  17.         add_post_meta($postID, $count_key, '0');
  18.     }else{
  19.         $count++;
  20.         update_post_meta($postID, $count_key, $count);
  21.     }
  22. }

然后,粘贴下面的代码到主题的 single.php 的文章的 loop 里:

  1. <?php setPostViews(get_the_ID()); ?>

最后,把下面的代码拷贝到任意你的主题模板里想要显示点击数的地方:

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

有朋友在 WSNIPP 提出上面代码添加统计会影响到其它的文章 (大概意思),所以在 functions.php 中添加以下代码:

  1. remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

能用代码实现就不用插件,这是用 WordPress 以来体会较深的一句话。功能实现了,网站速度也有所提高,是件很高兴的事!