Wordpress利用Ajax實現文章瀏覽次數統計代碼

來源:互聯網
上載者:User

但實現一個這麼簡單的功能還得用一個外掛程式實在是不划算,折騰了下,弄出一個可以支援緩衝的代碼,同樣也是使用 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%>)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.