首页 > CMS > Wordpress > 正文

Wordpress利用Ajax实现文章浏览次数统计代码

2024-09-07 00:50:58
字体:
来源:转载
供稿:网友

WordPress 实现一个对浏览数的统计其实是很简单的,现在主流的方式有两种,一种是通过代码来统计,一种是通过 wp-postviews 插件,而前者在使用缓存插件的时候就无力了,后者支持缓存(使用 Ajax).

但实现一个这么简单的功能还得用一个插件实在是不划算,折腾了下,弄出一个可以支持缓存的代码,同样也是使用 Ajax,首先是代码:

  1. function Bing_statistics_visitors( $cache = false ){ 
  2.  global $post
  3.  $id = $post->ID; 
  4.  if$cache ) $id = $_GET['id']; 
  5.  if( ( !is_singular() && !$cache ) || !$id ) return
  6.  if( WP_CACHE && !$cache ){ 
  7.   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>'
  8.   return
  9.  } 
  10.  $post_views = (int) get_post_meta( $id'views', true ); 
  11.  if( !update_post_meta( $id'views', ( $post_views + 1 ) ) ) add_post_meta( $id'views', 1, true ); 
  12. add_action( 'wp_head''Bing_statistics_visitors' ); 
  13.  
  14. //解决缓存问题 
  15. function Bing_statistics_cache(){ 
  16.  Bing_statistics_visitors( true ); 
  17. add_action( 'wp_ajax_nopriv_visitors''Bing_statistics_cache' ); 
  18. add_action( 'wp_ajax_(www.111cn.net)visitors''Bing_statistics_cache' ); 
  19.  
  20. //获取计数 
  21. function Bing_get_views( $get = true ){ 
  22.  global $post
  23.  $views = number_format( (int) get_post_meta( $post->ID, 'views', true ) ); 
  24.  if$get ) return $views
  25.  echo $views

代码在开启统计的时候自动会输出一段小 JS 来进行 Ajax,如果你已经开启缓存,使用我的代码的时候别忘了删除全部缓存文件.

用 Bing_get_views() 函数获取或输出数量,代码如下:

  1. //获取 
  2. echo Bing_get_views(); 
  3. //直接打印 
  4. Bing_get_views( false ); 

另外我补充一种像js调用php页面统计代码,文章模板包含以下语句:

<SCRIPT src="counter.asp?articleId=<%=#articleId#%>"></SCRIPT >

counter.asp 文件为实现记数的asp文件:

  1. <% 
  2. dim articleId,sqlStr,hits 
  3. articleId=int(trim(request.querystring("articleId"))) 
  4. sqlStr="update articles set hits=hits 1 where articleId=" & articleId 
  5. '给文章点击数加1 
  6. conn.execute(sqlStr) 
  7. '读出文章点击数 
  8. hits=conn.execute("select hits from articles where articleId=" & articleId)(0) 
  9. %> 
  10. '//打印出文章点击数 
  11. document.write(<%=hits%>) 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表