解决开启 WP Super Cache 缓存时 WP-Postviews 不计数的问题
鉴于 WP-Postviews 和 WP Super Cache 都是热门插件,所以两个插件冲突不计数的问题已经是个老问题了,但是网上的解决方案并没有真正解决问题,虽然计数了,但是在缓存更新之前是不会更新浏览数的,相信很多强迫症的朋友根本就不能忍受这个问题。到最后只能放弃其中的一个。当然,还有压根就不计数的朋友,这类朋友基本是因为长得太丑。
WP Super Cache 是在apache的环境下工作,nginx需要重写配置rewrite规则。关于伪静态配置,可参考下:WordPress 伪静态规则(IIS/Apache/Nginx)
说下 WP Super Cache 的原理吧,是把所有的页面转化成静态html,然后再通过30X定向,绕后php直接访问静态html来加速,在有新评论和新文章时会更新缓存,而 WP-Postviews 原理是每次访问给meta加1,启用cache后不调用php文件了,所以自然不会计数。于是插件的作者通过ajax来增加计数,但是不知道为啥,有时候js不能正确加载,于是手动修改下吧。
编辑wp-postviews.php,在插件目录下哦,找到下面的这段
替换成下面这样,也就是去掉了条件判断。
然后重新生成下缓存,就OK了。
这时候每次点击的时候后台会更新显示数,但是前台不会更新,下面我们来解决这个问题。
可以通过AJAX和DOM操作来解决。把下面的代码添加到wp-postviews.php中
这段添加到postviews-cache.js中
默认的调用方法是
现在替换为
或者
这时候我们发现,文章页是正常计数的而且实时刷新,但是首页还是不行啊,这个没办法了,不过可以通过设置wp-super-cache,不缓存首页,这样就完美解决问题了。。
本文链接:https://h.finchui.com/wordpress/2642.html 转载需授权!