折腾评论内容链接感悟——折腾需要细心和耐心

投稿   懿古今  2019-04-30 07:29:57  123 人阅读  20 条评论

现在做站点真的不容易,不说要维护服务器,也不说要更新站点内容,就说那些垃圾评论就够我们站长头痛的了。以前为了减少垃圾推广评论,特意限制了评论内容不能带链接,具体可参考『纯代码实现彻底屏蔽 WordPress 站点垃圾评论』一文第 3 小点屏蔽昵称、评论内容带链接的评论。

折腾评论内容链接感悟——折腾需要细心和耐心 海纳百川 第1张

但是某些场合我们需要在某些文章或页面放开限制链接的功能,比如boke112 导航的申请收录页面等,具体实现方法请参考『如何实现 WordPress 指定文章或页面允许评论带链接』。那么问题来了,这些放开的文章或页面的评论内容中链接默认只有一个 rel="nofollow",而且还是当前页面打开,老古认为是非常不友好的,所以有必要折腾一下。

因为懿古今和 boke112 导航站点都做了外链转内链跳转地址为 Base64 加密地址,所以就想把这个评论内容中的链接地址改为 Base64 加密地址,同时添加 rel="nofollow noopener" target="_blank"

折腾评论内容链接感悟——折腾需要细心和耐心 海纳百川 第2张

在折腾的时候想了很多办法,也参考了网络上很多相关教程,但是都没有成功。这个时候理论上应该让自己好好冷静认真想想,但是自己却是一副“不撞南墙不回头”态度去反复折腾代码,一直在测试各种各样的方法,前前后后试了很多种,结果总是不成功。最后使用一种最笨也是最简单的办法,那就是直接修改 WordPress 源文件,即打开 wp-includes\formatting.php 文件,找到以下代码(在 2801 行):

return $matches[1] . "<a href=\"$url\" rel=\"nofollow\">$url</a>" . $suffix;

修改为:

return $matches[1] . "<a href=\"https://www.yigujin.cn/go/?url=$url\" rel=\"nofollow noopener\" target=\"_blank\">$url</a>" . $suffix;

这个方法很简单也很有效,但是万一哪天WordPress 升级了自己又忘记修改代码,那么就前功尽弃了。

所以最后还是回到最初的想法,那就是函数来实现。比如使用以下方法实现:

//评论内容链接加密
function link_comment_jump($comment_text){
preg_match_all('/<a(.*?)href="(.*?)"(.*?)>/',$comment_text,$matches);
if($matches){
foreach($matches[2] as $val){
$comment_text=str_replace("href=\"$val\"", "href=\"https://www.yigujin.cn/goto/".base64_encode($val)."\" rel=\"nofollow noopener\" target=\"_blank\"",$comment_text);
}
}
return $comment_text;
}
add_filter( 'comment_text' , 'link_comment_jump', 20, 2);

从代码来看老古认为是正确的,但是查看评论内容中的链接地址还是没有变化。添加代码之后刷新了站点本地缓存,也清理了 CDN 缓存,但是不管怎么折腾都是那样没有变化。后来才想起试一下浏览器的无痕模式,没想到竟然成功了。评论内容中的链接地址已经变成 Base64 加密地址,而且该链接中也有 rel="nofollow noopener" target="_blank"。

但是为什么无痕模式成功而正常浏览器模式不成功呢?后来把代码前后的代码也认真仔细地看了一遍,此时才知道自己犯了一个低级错误。那就是为了方便,我将“评论内容链接加密”代码添加到防垃圾评论代码的后面,而这些防垃圾代码最外面是有一个判断条件的,那就是if ( !is_user_logged_in() ) {}。这个时候也就明白了,我所添加的“评论内容链接加密”代码在登录状态是不起作用的,而正常浏览器模式是登录状态,无痕模式没有登录。后来把代码放到这个判断函数外面就解决问题了。

折腾评论内容链接感悟——折腾需要细心和耐心 海纳百川 第3张

本文啰里啰嗦的目的,不是说教大家如何解决评论内容链接加密问题,而是想跟大家分享这次折腾的心得。从本文可以看出,老古在折腾的过程中犯了经验主义,以为把代码写对了然后把代码扔到当前主题的 functions.php 文件就会起作用,而不认真代码检查的前前后后,结果就是浪费了很多时间和精力。

这一次的折腾告诉我,以后折腾需要细心和耐心。如果不细心就可能会让自己忽略一些小细节从而导致多花时间和精力,甚至是无功而返。如果没有耐心的话,估计在折腾了几次都没有成功就放弃了,那么这个想法就永远无法实现。所以建议大家在折腾的时候能够保持细心和耐心,这样折腾起来可能会事半功倍哦。

您可能感兴趣的文章

文章标签: ,  
原文地址:https://www.yigujin.cn/1952.html
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为投稿文章,感谢 懿古今 的投稿,版权归原作者所有,欢迎分享本文,转载请保留出处!
©boke112导航,本站推荐使用:阿里云 ECS服务器等云产品服务,国外免备案主机建议使用:老薛主机
懿古今

 发表评论

强表情无奈表情抠鼻表情笑哭表情偷笑表情衰表情流汗表情奋斗表情吐血表情抓狂表情晕表情流泪表情疑问表情呲牙表情惊讶表情鼓掌表情

  1. WordPress百宝箱
    WordPress百宝箱 @回复

    最近一直在忙毕业季,评论用好了可以方便seo优化

  2. 清风小墨
    清风小墨 @回复

    好久没来了啊

  3. 西安手机批发
    西安手机批发 @回复

    我觉得你就是在针对我,不然我换汉字昵称干嘛,哈哈

  4. 镜缘轩
    镜缘轩 @回复

    我感觉知更鸟的主题在防垃圾评论方面还是很给力的

  5. 唯心寒辞
    唯心寒辞 @回复

    我之前建的一个小博客一段时间没去打理,上去一看一堆垃圾评论

  6. 菊
     @回复

    目前还没受到很多垃圾评论的侵扰,可能是站小了

  7. 靠谱学生兼职网
    靠谱学生兼职网 @回复

    评论广告多,小站大站都 有

  8. 我爱技术
    我爱技术 @回复

    我的是屏蔽关键词

  9. 虚拟主机推荐
    虚拟主机推荐 @回复

    新站,还没有这方面的烦恼,哈哈。目前基本没评论。

  10. 子午物联网
    子午物联网 @回复

    刚知道noopener标签的作用

  11. 明月云服务
    明月云服务 @回复

    最近使用了会员制度的主题后发现垃圾评论少了很多!

  12. 明月登楼
    明月登楼 @回复

    老古的这个站点垃圾评论是重灾区感觉!

    • 行之癫
      行之癫2019-05-02 17:25  回复

      @明月登楼你的博客怎么打不开了?www。imydl。com 404 Not Found

  13. WordPress建站吧
    WordPress建站吧 @回复

    我的是屏蔽关键词,,那些垃圾评论自己就跑到垃圾回收站去了,,偶尔去筛查然后清空

  14. 里维斯社
    里维斯社 @回复

    做了之后才会成为自己的经验,所以折腾、耗精力那都不是事。

  15. 知识共享网
    知识共享网 @回复

    确实,少一点套路,多一份真诚 [笑哭]