大家都习惯使用 WP-Postviews 这款插件来统计文章浏览数,这个插件附带了很多统计输出函数,其实大部分人也就只要统计下浏览数,然后显示出来就行,所以“重新复活”的阿邙盆友折腾了个代码版。
【原文:免插件输出文章浏览数及浏览最多文章】
我个人只要“统计和输出浏览数”功能,所以挪用了主体函数部分
--------------------------------------------------
Change log:
2013.05.09 风险性敬告:昨天本人在折腾服务器,对博客搬了几次家,加上博客压力测试导致网站频频 502,然后今天发现首页的文章浏览数被清零了,虽然不一定是这个代码导致的,但请使用的朋友自行承担风险。
2013.05.13 Update: 代码已更新到 0.2.0 版本,针对05.09那天的敬告,我重新分析了下代码并且做了更改,取消 delete_post_meta 函数处理,改为 update_post_meta 函数的行为判断来对文章的计数判断,按道理能防止浏览数的删除,目前本博在用,有兴趣的朋友可以试试。
--------------------------------------------------
主体函数代码:把下面代码放入主题的 functions.php 里面(<?php ... ?> 里面)
Version: 0.1.0(停用)
//////// postviews - by http://of.gs/un-plugin-post-views.html, modify by zwwooooo|zww.me, Version 0.1.0
function custom_the_views($post_id, $echo=true, $views=' views') {
$count_key = 'views';
$count = get_post_meta($post_id, $count_key, true);
if ($count == '') {
delete_post_meta($post_id, $count_key);
add_post_meta($post_id, $count_key, '0');
$count = '0';
}
if ($echo)
echo number_format_i18n($count) . $views;
else
return number_format_i18n($count) . $views;
}
function set_post_views() {
global $post;
$post_id = $post->ID;
$count_key = 'views';
$count = get_post_meta($post_id, $count_key, true);
if (is_single() || is_page()) {
if ($count == '') {
delete_post_meta($post_id, $count_key);
add_post_meta($post_id, $count_key, '0');
} else {
update_post_meta($post_id, $count_key, $count + 1);
}
}
}
add_action('get_header', 'set_post_views');
Version: 0.2.0(2013.05.13)
/*
postviews
Origin: http://of.gs/un-plugin-post-views.html
Modify: zwwooooo https://zww.me
Version:0.2.0
*/
function custom_the_views($post_id, $echo=true, $unit=' views') {
$count_key = 'views';
$views = get_post_custom($post_id);
$views = intval($views['views'][0]);
if ($views == '') {
return '';
} else {
if ($echo) {
echo number_format_i18n($views) . $unit;
} else {
return number_format_i18n($views) . $unit;
}
}
}
function set_post_views() {
global $post;
$post_id = intval($post->ID);
$count_key = 'views';
$views = get_post_custom($post_id);
$views = intval($views['views'][0]);
if (is_single() || is_page()) {
if(!update_post_meta($post_id, 'views', ($views + 1))) {
add_post_meta($post_id, 'views', 1, true);
}
}
}
add_action('get_header', 'set_post_views');
浏览数显示函数:custom_the_views($post_id, $echo=true, $views=' views')
参数说明:
1. $post_id: 文章ID,一般填 $post->ID
2. $echo: true/false,显示/获取浏览数(默认是显示-true)
3. $views: 浏览数单位(默认是:空格+views)
一般调用方法:<?php if ( function_exists('custom_the_views') ) custom_the_views($post->ID); ?>
PS:
如果原来用了 WP-Postviews 这个插件,只要把 <?php the_views(); ?> 改为 <?php custom_the_views($post->ID); ?> 即可。
或者是:
<?php if ( function_exists('the_views') ) the_views(); ?> 改为 <?php if ( function_exists('custom_the_views') ) custom_the_views($post->ID); ?>
祝大家五一假期快乐!
- 本文标题:代码版文章浏览数
- 本文链接:https://zww.me/post-views-code-version.z-turn
- 发布时间:2013年04月29日 20:50
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
学习咯~
这个不支持静态吧~
@Cat
没测试,根据 add_action('get_header', 'set_post_views'); 加数的。
果然精简了很多呀
@万戈
其实也偷懒,神马自适应的太花时间,所以……
其实右下角的足迹功能更好
@空空裤兜
有时间整理下
@zwwooooo
谢谢整理,谢谢了喔,很适合博客的功能。
@SEV
还没动手,最近忙其他的
我前不久刚撤去插件,换成代码版的,还不错。
@郑永
嗯,反正也就统计下而已
五一喽,过来瞅瞅
@久酷
五一都去哪玩了?
有没有人告诉你,把人家名字写错了……
@axiu
有一个叫axiu的告诉我了,已纠正
@zwwooooo
那打200块钱感谢他一下吧,是个好人啊
@axiu
已经打了,估计他100%收不到
@zwwooooo
那真是可惜了,要不你打给我,帮你转给他 (pia飞~
我去把插件换成这个代码试试去。。。
@migong
嗯,试试吧
厉害,好不大叔把
传我邮箱一份儿吧!谢谢了哦
@SEV
代码没整理 …… 稍后有时间放出
@zwwooooo
3Q,每天刷你博客N次,顺便帮你点点广告,在小屏幕不能看你的边栏怎么办呢?
@SEV
小屏幕不需要边栏内容了,最多下次加上最新评论。。。
@zwwooooo
强烈求代码...这功能很赞的...
@Jason Cooper
忙忘了。。。
这个和postview的原理一样,连数据都不用倒过来了。。
@大发
其实就是 postviews,只用核心函数而已
劳动节快乐
@常阳时光
劳动节不劳动,哈
用了缓存插件还能统计吗?
@小五
木有测试……
好吧!一不小心就进来了!
@Sepia
继续不小心
五一节快乐啊!
这个代码好精简啊,只是改代码在换主题时需要再次修改吧
@七零后CFO
难道代码会自己跑到你新换的主题么?那就太厉害了
大叔五一快乐
@哥特复兴
节日都过了我才来回复,祝你开心。
悲剧的五一又要宅在家里了
@W3Cshare
我也是一直宅在家里
@zwwooooo
你怎么也宅了,不是应该有各种美女么
@W3Cshare
美女,LP是干嘛的
@zwwooooo 说的美女就是你LP啊
@W3Cshare
各种美女。。。各种LP,国家不准三妻四妾
很不错。。
一直用代码统计的路过~
5.1已过,晚来的祝福~
@airoschou
其实插件方便,不过这个插件还是需要动手,干脆就整合了
主要还是缓存后不计数的问题比较头疼。。。
@公子
Hyper Cache貌似可以计数。
@阿邙
是嘛? 我这就不变。
@公子
哈,一般博客不需要缓存
五一快乐。
我在用这样一段代码,不知道跟这个有什么区别。
@有点蓝
一样的