实现WordPress提交评论的时删除该页面的WP-Super-Cache缓存的方法

这篇文章依然是围绕缓存问题展开的,lnmp环境下的WordPress使用WP-Super-Cache插件,若要开启mod_rewrite 缓存模式,需要在nginx里面加入一些特定的规则,具体请见旧文:《nginx下wp super cache的mod_rewrite规则》。

用过WP-Super-Cache插件的应该都知道,在高级设置里面有一项【当某页面有新评论时,只刷新该页面的缓存】的功能,从字面上来说,就是当有人在某篇文章发起评论时,将删除该页面的缓存。

但是,经过我仔细测试发现,这个功能在我的博客并没有生效,个人猜测失败的原因可能是使用了ajax无刷新评论导致的。也就是采用ajax评论的方式,可能无法触发WP-Super-Cache的删除机制,从而导致这个功能的失效!总之,不管怎么样,反正在我的博客失效了,现在就要想办法解决这个问题。

既然你不行,那就我来!

简单的加上几句并不高端的PHP代码后,就实现了这个功能:

编辑主题下的comments-ajax.php文件(启用ajax评论的博客才有),找到如下代码:

然后,在这行代码之后添加删除缓存代码,保存即可:

现在有人提交评论时,将会判断是否存在该页缓存,如果存在就删除,从而实现了我要的功能。

本来想用 is_page() 和 is_single()来判断页面内容,从而简化代码的,可惜不生效,至少用上面的笨方法了!反正能实现就可以了。

发表评论

gravatar

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

刷新评论

目前评论:8   其中:访客  6   博主  2

  1. 民间偏方大全 1 来自天朝的朋友 谷歌浏览器 Windows 7 广东省广州市 电信

    确实记不住之前填写的信息了。

  2. 成都SEO 5 来自天朝的朋友 谷歌浏览器 Windows 7 四川省成都市 奇虎360科技电信CDN节点

    额,俺们小站流量不大,暂时用不着。
    话说啥事lnmp是linux+ngnix+mysql+php?

    • 张戈 [博主] 来自天朝的朋友 谷歌浏览器 Windows 7 广西贵港市 奇虎360科技电信CDN节点

      正解~

  3. 飞哥 4 来自天朝的朋友 谷歌浏览器 Windows 7 广西贵港市 奇虎360科技电信CDN节点

    张戈。请问如何wordpress 精简js文件和css文件,你是怎么处理的呢?

    • 张戈 [博主] 来自天朝的朋友 谷歌浏览器 Windows 7 广西贵港市 奇虎360科技电信CDN节点

      合并的合并,压缩的压缩,百度一下你就知道。

  4. 会跳舞的红绿灯 2 来自天朝的朋友 谷歌浏览器 Windows 7 上海市 奇虎360科技电信CDN节点

    那我这条评论能成功吗??

  5. lock 4 来自天朝的朋友 谷歌浏览器 Windows 7 湖南省益阳市南县 电信

    话说6,7行是删除首页缓存?

  6. Oeasy 1 来自天朝的朋友 谷歌浏览器 Windows 7 中国 移动

    同知更鸟主题 启用了ajax评论 找不到comments-ajax.php文件

加载中,请稍候...