wordpress解决wp-postviews文章浏览次数

MrLee2016-3-24 1546

博主自从建站以来差不多也有近2年了,期间也用过一些cms系统,最早用的是dedecms,功能强大,支持生成静态页面。首页简单,当时很是喜欢,后来用了一个星期,结局用过dedecms估计都知道,被黑掉了!后来看了下其它的cms和blog程序,什么帝国cms,thinkphp自己写的,emlog……反正不是不好看就是安全性不高或功能过于强大,wordpress也用过,但是感觉这玩意儿好慢,效率感觉不高。但是全球用的最多,安全性最高,后来果断选它了(后续自己研究优化,其实还好,比如我现在网站首页打开也只要0.1~0.2秒之间)!
好像说了一大堆跟文章无关的内容,更正话题直入主题吧!(其实我是想表达WP用后感,然后好多人用了wp-super-cache插件,然后wp-postviews插件不能自动更新文章浏览次数)
wp-super-cache这个插件大家主要是用来访问过页面生成静态的html文件,这样下次就可以不用查询数据库了,大大减少数据库的并发量,明显是提升网站速度的一个好插件。但是问题随之也来了,既然不查询数据库,直接访问html静态文件,浏览次数当然也就不能更新了,那有啥办法呢?
方法其实很简单,我们在自己的文章.php页面提前加入aJax代码,这个aJax代码就专门负责异步更新文章浏览次数,然后用js更新静态html文件输出的值。这样不就很简单了吗?
一:首先在文章页面(single.php)添加一段js代码
围观



以上是php中的代码,看下生成的html静态是啥样的。
围观
103

二:实现统计的php代码
//统计浏览次数 post_views_count
function getPostViews($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if ($count == '') {
        delete_post_meta($postID, $count_key);
        $count = 0;
        add_post_meta($postID, $count_key, $count);
        return $count;
    }
    return $count;
}
function setPostViews($postID) {
    $count_key = 'post_views_count';
    $focount = get_post_meta($postID, $count_key, true);
    $other = get_post_meta($postID, 'views', true);
    $count = max($focount, $other);
    if ($count == '') {
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    } else {
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}

三:实现aJax代码

 

本文链接:https://www.it72.com/8415.htm

推荐阅读
最新回复 (0)
    返回