但实现一个这么简单的功能还得用一个插件实在是不划算,折腾了下,弄出一个可以支持缓存的代码,同样也是使用 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 '';
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,如果你已经开启缓存,使用我的代码的时候别忘了删除全部缓存文件。
用 Bing_get_views() 函数获取或输出数量:
代码如下 |
复制代码 |
//获取
echo Bing_get_views();
//直接打印
Bing_get_views( false );
|
另外我补充一种像js调用php页面统计代码
文章模板包含以下语句:
代码如下 |
复制代码 |
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%>)
|