但實現一個這麼簡單的功能還得用一個外掛程式實在是不划算,折騰了下,弄出一個可以支援緩衝的代碼,同樣也是使用 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_visitors', 'Bing_statistics_cache' ); //擷取計數 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; } |
代碼在開啟統計的時候自動會輸出一段小 JS 來進行 Ajax,如果你已經開啟緩衝,使用My Code的時候別忘了刪除全部快取檔案。
用 Bing_get_views() 函數擷取或輸出數量:
代碼如下 |
複製代碼 |
//擷取 echo Bing_get_views(); //直接列印 Bing_get_views( false );
|
另外我補充一種像js調用php頁面統計代碼
文章模板包含以下語句:
代碼如下 |
複製代碼 |
<SCRIPT src="counter.asp?articleId=<%=#articleId#%>"></SCRIPT > counter.asp 檔案為實現記數的asp檔案 <% '################### '######開始######### 'BY 王向超 '################### dim articleId,sqlStr,hits articleId=int(trim(request.querystring("articleId"))) sqlStr="update articles set hits=hits 1 where articleId=" & articleId '給文章點擊數加1 conn.execute(sqlStr) '讀出文章點擊數 hits=conn.execute("select hits from articles where articleId=" & articleId)(0) %> '列印出文章點擊數 document.write(<%=hits%>) |