WordPress获取文章浏览总数

大部分 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://zhangge.net/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(); ?>

好了,本文分享结束,希望对你有所帮助。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员的SOD蜜

PDF.NET(PWMIS数据开发框架)之SQL-MAP目标和规范

SQL-MAP的目标: 集中管理SQL语句,所有SQL语句放在专门的配置文件中进行管理; 通过替换SQL配置文件,达到平滑切换数据库到另外一个数据库,比如从O...

27180
来自专栏carven

gulp尝试开发

这是挺久之前的事情了,还是觉得先记录下来,免得自己忘记了。 在实习的公司做web开发,gulp 是经常用到的,可是我做的不仅仅的前端,还包括后台, 所以将前端文...

12500
来自专栏智能大石头

5,ORM组件XCode(动手)

本篇才真正是XCode教程第一篇。《速览》是为了以最简洁的语言最短小的篇幅去吸引开发者;《简介》则是对XCode组件和XCode开发模式的一个整体介绍,让开发者...

21890
来自专栏程序猿

带您理解SQLSERVER是如何执行一个查询的

带您理解SQLSERVER是如何执行一个查询的 连接方式和请求 如果你是一个开发者,并且你的程序使用SQLSERVER来做数据库的话 你会想知道当你用你的程序执...

54390
来自专栏小白安全

Web安全测试基础二

SQL Map实例 第一步:查看该网站是否存在sql注入漏洞 结果得出,该服务器类型是Windows 2003 or xp,数据库类型是Access...

29150
来自专栏编程心路

SSH框架之旅-hibernate(2)

下面展示了两种方式来删除一条记录,但建议使用第一种,先查询后删除的方式,应该避免第二种直接设置主键对应属性值的方式。

14130
来自专栏数据处理

Delete Duplicate Emails

19040
来自专栏曾大稳的博客

生产者消费者模型

12120
来自专栏ml

------------数据库的加锁操作(上)

       从事一个项目,需要考虑数据的安全性,之前对于数据库这部分的数据操作学习的比较零散,由于手头的项目,于是系统的 学习了下数据库操作加锁的知识: --...

542100
来自专栏前端小叙

前端如何获取http状态码400的返回值

axios.get("/check_mobile_and_sent_code",{withCredentials:true,params:{mobile:for...

41780

扫码关注云+社区

领取腾讯云代金券