WordPress代码实现统计阅读数

cera cera

经常看到有WordPress站长在到处找统计文章阅读数量的插件,其实一般国内的主题都自带阅读数量统计,国外的就不知道了,我想应该很少有的,毕竟国外的WordPress主题大部分都是非常精简的,比如WordPress官方给的主题。那么想要给自己用的WordPress主题增加一个统计文章阅读数量的功能很困难吗?答案肯定是十分简单,仅仅只需3步即可拥有这个功能。

不过在实现这个功能之前,代码狗必须提醒各位,统计文章阅读数量的功能函数不会被WordPress的对象缓存机制识别,也就是说不会被缓存,加了这个功能会导致页面的sql查询数量增加1次,如果你对查询数量有所要求,还对这个数量的准确性有要求的话,还是建议不要使用了。当然如果你必须要这个功能,但对数量准确性要求不是特别高,那么可以参考memcached缓存将这个数据存在内存中,等它累计10次、20次再写入数据库中,这样如果memcached服务被重启、刷新都将丢失一些阅读量。具体如何选择看诸位自己,这里提供方法,不包括优化。

实现原理
通过WordPress官方提供的add_post_meta方法,将用户自定义字段存储在wp_postmeta表中,在用户需要的时候通过get_post_meta方法获取,需要修改时使用update_post_meta方法修改更新。详细使用方法见:WordPress函数add_post_meta详解

实现方法
在你的主题functions.php文件中插入如下代码:

 

\\记录文章阅读数量
function _post_views_record() {
if (is_singular()) {
global $post;
$post_ID = $post->ID;
if ($post_ID) {
$post_views = (int) get_post_meta($post_ID, ‘views’, true);
if (!update_post_meta($post_ID, ‘views’, ($post_views + 1))) {
add_post_meta($post_ID, ‘views’, 1, true);
}
}
}
}
获取文章阅读数量

\\获取文章阅读数量
function _get_post_views($before = ‘阅读(‘, $after = ‘)’) {
global $post;
$post_ID = $post->ID;
$views = (int) get_post_meta($post_ID, ‘views’, true);
return $before . $views . $after;
}
然后打开主题的header.php文件,在头部加入如下代码,调用记录阅读数量方法:


这样每次打开页面都将会执行这个方法,自动将阅读数记录下来。

然后在文章列表模板,或者文字页模板single.php中你想显示阅读数量的位置,添加获取文章阅读数量的方法。

好了,到此你就已经成功集成了文章阅读数量的统计功能,在做这些操作前记得先打个磁盘快照,或者备份下文件,如果操作失误导致数据丢失,本站概不负责。

感觉很棒!可以赞赏支持我哟~

cera cloudiplc tengxunyun

相关推荐

mjjping.com cera cera cloudiplc