现在做站点真的不容易,不说要维护服务器,也不说要更新站点内容,就说那些垃圾评论就够我们站长头痛的了。以前为了减少垃圾推广评论,特意限制了评论内容不能带链接,具体可参考『纯代码实现彻底屏蔽 WordPress 站点垃圾评论』一文第 3 小点屏蔽昵称、评论内容带链接的评论。
但是某些场合我们需要在某些文章或页面放开限制链接的功能,比如 boke112 导航的申请收录页面等,具体实现方法请参考『如何实现 WordPress 指定文章或页面允许评论带链接』。那么问题来了,这些放开的文章或页面的评论内容中链接默认只有一个 rel="nofollow",而且还是当前页面打开,老古认为是非常不友好的,所以有必要折腾一下。
因为懿古今和 boke112 导航站点都做了外链转内链跳转地址为 Base64 加密地址,所以就想把这个评论内容中的链接地址改为 Base64 加密地址,同时添加 rel="nofollow noopener" target="_blank"。
在折腾的时候想了很多办法,也参考了网络上很多相关教程,但是都没有成功。这个时候理论上应该让自己好好冷静认真想想,但是自己却是一副“不撞南墙不回头”态度去反复折腾代码,一直在测试各种各样的方法,前前后后试了很多种,结果总是不成功。最后使用一种最笨也是最简单的办法,那就是直接修改 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() ) {}。这个时候也就明白了,我所添加的“评论内容链接加密”代码在登录状态是不起作用的,而正常浏览器模式是登录状态,无痕模式没有登录。后来把代码放到这个判断函数外面就解决问题了。
本文啰里啰嗦的目的,不是说教大家如何解决评论内容链接加密问题,而是想跟大家分享这次折腾的心得。从本文可以看出,老古在折腾的过程中犯了经验主义,以为把代码写对了然后把代码扔到当前主题的 functions.php 文件就会起作用,而不认真代码检查的前前后后,结果就是浪费了很多时间和精力。
这一次的折腾告诉我,以后折腾需要细心和耐心。如果不细心就可能会让自己忽略一些小细节从而导致多花时间和精力,甚至是无功而返。如果没有耐心的话,估计在折腾了几次都没有成功就放弃了,那么这个想法就永远无法实现。所以建议大家在折腾的时候能够保持细心和耐心,这样折腾起来可能会事半功倍哦。
发表于2019-04-30 16:38 沙发
博主够执着的。
有学习就有进步。修改调试是最让人头疼痛苦的一件事,成功了有特别高兴。做站的应该都是这种体会吧。
@热腾网有时候遇到问题不解决是睡不着的,所以总想着要折腾
发表于2019-04-30 16:42 板凳
在使用博主的主题时,发现一个问题
后台 —— 主题选项 —— 常规设置 —— 首页隐藏的分类ID
发现添加的不是需要隐藏的ID
而是添加的需要显示的ID,没添加的就隐藏掉了
这对于分类多站长,隐藏一个分类,就需要添加很多ID了
@RG博客这种选项一般输入都要带上-,比如不想显示分类8,则输入-8.主题选项有说明
发表于2019-04-30 18:04 地板
我也经常犯这种错误,比如最近我把服务器的定时任务给清零了! [晕] [衰] [惊讶]
@明月登楼这种低级错误有时候真的挺浪费时间的
发表于2019-04-30 18:05 4楼
折腾必须细心!否则问题多多! [呲牙]
发表于2019-05-01 00:26 5楼
有技术才能折腾啊,像我这没技术的折腾真不容易
@魏义齐个人博客[流汗] 如果你都说没技术的话,其他人都没有活路了
发表于2019-05-01 18:54 6楼
我看到代码就愁呀 [笑哭]
@职业群主其实不折腾代码也挺好,可以专注在内容上,这样更容易获得成功
发表于2019-05-02 21:58 7楼
这种错误就跟写错单词,也不提示报错,最烦的就是这种错误,很难发现,好在博主你发现了,不妨在检查的时候放大字体试试
@野人是的,很多时候浪费时间的就是在这些不起眼的错误中,所以以后折腾都需要特别细心才行。
发表于2019-05-03 18:54 8楼
博主五一快乐!
@鸟叔[呲牙] 谢谢祝福,大家同乐。假期我很少碰电脑,所以博客就没看
发表于2019-05-04 09:26 9楼
已备案的网站被人刷反云力的评论,那就很可怕了
@青山所以要经常看看评论内容,要不然就麻烦大了
发表于2019-05-04 11:56 10楼
最近看到有人用这个主题,因为看到了logo
@TTTT其实这个主题功能还是比较少的,适合初学者吧
发表于2019-05-04 15:45 11楼
垃圾广告主要就是英文的多,开禁止全英文和链接内容的就行了。
@奶爸de笔记这个功能很早就有了,不过某些页面比较特殊,所以就针对性地折腾一下
发表于2019-05-04 16:20 12楼
生命不息,折腾不止。既然保持钻研的精神,也要防止过多不重要的细节。
@天鸡部落保持折腾可以保持激情,要不然玩着玩着就没有心思玩博客了
发表于2019-05-05 10:25 13楼
突然想起你~
发表于2019-05-06 19:41 14楼
我直接把评论关了,从此没有垃圾评论的烦恼。但网站也没有了互动,有利有弊。
@摩羯[强] 评论关闭之后烦恼少了很多,也可以更专注在网站内容上,就是没有了用户评论,少一大乐趣,有得有失吧
发表于2019-05-07 20:49 15楼
这到底是怎样的一个网站 什么内容都有
@软件库[呲牙] 个人博客,肯定是记录自己身边发生的一切人、事、物等