华纳云香港服务器

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

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

折腾评论内容链接感悟——折腾需要细心和耐心-第1张-boke112百科(boke112.com)

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

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

折腾评论内容链接感悟——折腾需要细心和耐心-第2张-boke112百科(boke112.com)

在折腾的时候想了很多办法,也参考了网络上很多相关教程,但是都没有成功。这个时候理论上应该让自己好好冷静认真想想,但是自己却是一副“不撞南墙不回头”态度去反复折腾代码,一直在测试各种各样的方法,前前后后试了很多种,结果总是不成功。最后使用一种最笨也是最简单的办法,那就是直接修改 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张-boke112百科(boke112.com)

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

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

本文地址:https://boke112.com/post/6721.html

赞 (0) 打赏
版权声明:本文为投稿文章,感谢 懿古今 的投稿,版权归原作者所有!发布此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请联系我们,确认后马上更正或删除,谢谢!
wu