大部分 WordPress 都会安装 wp-postviews 插件来记录文章浏览量,这是一个很实用的插件。不过它并没有提供计算文章浏览总数的功能,为了弥补这个缺憾,我们可以在插件基础上 DIY 一个统计文章浏览总数的功能。
实现很简单,网络上也已经有文章做了分享,代码如下:
//浏览总数 function lo_all_view() { global $wpdb; $count=0; $views= $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key='views'"); foreach($views as $key=>$value) { $meta_value=$value->meta_value; if($meta_value!=' '){ $count+=(int)$meta_value; } } return $count; }
这个代码实现的原理是先把所有符合条件的 meta 字段全部查询了出来,然后做遍历运算得到最终浏览总数,比较啰嗦。
所以我重新写了一个性能更好的函数,尤其是用于大量文章的网站的时候,代码如下:
/** * WordPress 获取文章浏览总数优化版 By 张戈博客 * 文章地址:https://zhang.ge/551.html * 转载请保留原文出处,谢谢合作! */ function lo_all_view(){ global $wpdb; $count = $wpdb->get_var("SELECT sum(meta_value) FROM $wpdb->postmeta WHERE meta_key='views'"); return $count; }
实现更加简单,直接使用 MySQL 的 sum 方法计算浏览总数,一步到位。
用法和上文代码一样:
1、将这个函数添加到 WordPress 主题函数模板文件 functions.php 当中即可(注意如果之前加过同名函数的话,请先删除,否则会出现冲突导致网站报错!)
2、在需要显示浏览总数的地方,加入如下代码即可:
<?php echo lo_all_view(); ?>
好了,本文分享结束,希望对你有所帮助。
浏览总数一般都是比较大的,怎么在超过1000的时候自动转换为1K,到10000的时候转换为1W?就是怎么把这个判断加进去?
if ($num >= 100000) {
$num = '10w+';
} elseif ($num >= 10000) {
$num = round($num / 10000 * 100) / 100 .'w';
} elseif($num >= 1000) {
$num = round($num / 1000 * 100) / 100 . 'k';
} else {
$num = $num;
}
return $num;
已经解决了。
在需要显示浏览总数的地方,能具体一点吗?用的是wordpress