用 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 以來體會較深的一句話。功能實現了,網站速度也有所提高,是件很高興的事!