這篇文章主要介紹了調用WordPress函數統計文章訪問量及PHP原生計數器的實現,文中作者也提到了WordPress中的兩款插件不過出于性能考慮并不推薦插件方式的實現,需要的朋友可以參考下。
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);
- }
- ?>
新聞熱點
疑難解答
圖片精選