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

释放双眼,带上耳机,听听看~!

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

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

既然你不行,那就我来!

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

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

do_action('pre_comment_on_post', $comment_post_ID);

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

//有人评论将自动删除已存在缓存
$post_data = get_post($post->ID, ARRAY_A);
$slug = $post_data['post_name'];
$cache_s = WP_CONTENT_DIR."/cache/supercache/".$_SERVER['SERVER_NAME']."/".$post->ID.".html/index.html";
$cache_sd = WP_CONTENT_DIR."/cache/supercache/".$_SERVER['SERVER_NAME']."/".$post->ID.".html";
$cache_p = WP_CONTENT_DIR."/cache/supercache/".$_SERVER['SERVER_NAME']."/".$slug."/index.html";
$cache_pd = WP_CONTENT_DIR."/cache/supercache/".$_SERVER['SERVER_NAME']."/".$slug;
if (file_exists($cache_s)) {
    unlink($cache_s);
    rmdir($cache_sd);
 }
if (file_exists($cache_p)) {
    unlink($cache_p);
    rmdir($cache_pd);
    }

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

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

温馨提示:本文最后更新于 2022-12-11 01:43 ,某些文章具有时效性,若有错误或已失效,请在下方留言或联系逆念

给TA打赏
共{{data.count}}人
人已打赏
网络技术

【WordPress教程】纯代码实现个人企业微信接评论信息(附B2主题增强订单通知)

2022-5-27 23:49:29

网络技术

WordPress通过加密隐藏wp-login/admin后台默认登录地址

2022-5-28 19:02:56

重要声明

本站资源大多来自网络,如有侵犯你的权益请联系管理员,QQ508044570 我们会第一时间进行审核删除。站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!


如果遇到付费才可观看的文章,建议升级终身VIP。全站所有资源任意下免费看”。本站资源少部分采用7z压缩,为防止有人压缩软件不支持7z格式,7z解压,建议下载7-zip,zip、rar解压,建议下载WinRAR

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索