WordPress 實現(xiàn)一個對瀏覽數(shù)的統(tǒng)計其實是很簡單的,現(xiàn)在主流的方式有兩種,一種是通過代碼來統(tǒng)計,一種是通過 wp-postviews 插件,而前者在使用緩存插件的時候就無力了,后者支持緩存(使用 Ajax).
但實現(xiàn)一個這么簡單的功能還得用一個插件實在是不劃算,折騰了下,弄出一個可以支持緩存的代碼,同樣也是使用 Ajax,首先是代碼:
- function Bing_statistics_visitors( $cache = false ){
- global $post;
- $id = $post->ID;
- if( $cache ) $id = $_GET['id'];
- if( ( !is_singular() && !$cache ) || !$id ) return;
- if( WP_CACHE && !$cache ){
- echo '<script type="text/javascript">window.onload=function(){var e=null;window.XMLHttpRequest?e=new XMLHttpRequest:e=new ActiveXObject("Microsoft.XMLHTTP"),e.open("GET","' . admin_url( 'admin-ajax.php' ) . '",!0),e.send("action=visitors&id=' . $id . '")}</script>';
- return;
- }
- $post_views = (int) get_post_meta( $id, 'views', true );
- if( !update_post_meta( $id, 'views', ( $post_views + 1 ) ) ) add_post_meta( $id, 'views', 1, true );
- }
- add_action( 'wp_head', 'Bing_statistics_visitors' );
- //解決緩存問題
- function Bing_statistics_cache(){
- Bing_statistics_visitors( true );
- }
- add_action( 'wp_ajax_nopriv_visitors', 'Bing_statistics_cache' );
- add_action( 'wp_ajax_(www.111cn.net)visitors', 'Bing_statistics_cache' );
- //獲取計數(shù)
- function Bing_get_views( $get = true ){
- global $post;
- $views = number_format( (int) get_post_meta( $post->ID, 'views', true ) );
- if( $get ) return $views;
- echo $views;
- }
代碼在開啟統(tǒng)計的時候自動會輸出一段小 JS 來進行 Ajax,如果你已經(jīng)開啟緩存,使用我的代碼的時候別忘了刪除全部緩存文件.
用 Bing_get_views() 函數(shù)獲取或輸出數(shù)量,代碼如下:
- //獲取
- echo Bing_get_views();
- //直接打印
- Bing_get_views( false );
另外我補充一種像js調(diào)用php頁面統(tǒng)計代碼,文章模板包含以下語句:
<SCRIPT src="counter.asp?articleId=<%=#articleId#%>"></SCRIPT >
counter.asp 文件為實現(xiàn)記數(shù)的asp文件:
- <%
- dim articleId,sqlStr,hits
- articleId=int(trim(request.querystring("articleId")))
- sqlStr="update articles set hits=hits 1 where articleId=" & articleId
- '給文章點擊數(shù)加1
- conn.execute(sqlStr)
- '讀出文章點擊數(shù)
- hits=conn.execute("select hits from articles where articleId=" & articleId)(0)
- %>
- '//打印出文章點擊數(shù)
- document.write(<%=hits%>)
新聞熱點
疑難解答
圖片精選