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

2019年04月29日 22:56:01  阅读 159 次 评论 28 条

现在做站点真的不容易,不说要维护服务器,也不说要更新站点内容,就说那些垃圾评论就够我们站长头痛的了。以前为了减少垃圾推广评论,特意限制了评论内容不能带链接,具体可参考『纯代码实现彻底屏蔽 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
版权声明:本文为原创文章,版权归 懿古今 所有,欢迎分享本文,转载请保留出处!

发表评论

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

表情

  1. 软件库
    软件库 @回复

    这到底是怎样的一个网站 什么内容都有

  2. 摩羯
    摩羯 @回复

    我直接把评论关了,从此没有垃圾评论的烦恼。但网站也没有了互动,有利有弊。

    • 懿古今
      懿古今2019-05-09 12:12  回复

      @摩羯[强] 评论关闭之后烦恼少了很多,也可以更专注在网站内容上,就是没有了用户评论,少一大乐趣,有得有失吧

  3. 抒航
    抒航 @回复

    突然想起你~

  4. 天鸡部落
    天鸡部落 @回复

    生命不息,折腾不止。既然保持钻研的精神,也要防止过多不重要的细节。

  5. 奶爸de笔记
    奶爸de笔记 @回复

    垃圾广告主要就是英文的多,开禁止全英文和链接内容的就行了。

  6. TTTT
    TTTT @回复

    最近看到有人用这个主题,因为看到了logo

  7. 青山
    青山 @回复

    已备案的网站被人刷反云力的评论,那就很可怕了

  8. 鸟叔
    鸟叔 @回复

    博主五一快乐!

  9. 野人
    野人 @回复

    这种错误就跟写错单词,也不提示报错,最烦的就是这种错误,很难发现,好在博主你发现了,不妨在检查的时候放大字体试试

    • 懿古今
      懿古今2019-05-06 16:48  回复

      @野人是的,很多时候浪费时间的就是在这些不起眼的错误中,所以以后折腾都需要特别细心才行。

  10. 职业群主
    职业群主 @回复

    我看到代码就愁呀 [笑哭]

  11. 魏义齐个人博客
    魏义齐个人博客 @回复

    有技术才能折腾啊,像我这没技术的折腾真不容易

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

    折腾必须细心!否则问题多多! [呲牙]

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

    我也经常犯这种错误,比如最近我把服务器的定时任务给清零了! [晕] [衰] [惊讶]

  14. RG博客
    RG博客 @回复

    在使用博主的主题时,发现一个问题
    后台 —— 主题选项 —— 常规设置 —— 首页隐藏的分类ID
    发现添加的不是需要隐藏的ID
    而是添加的需要显示的ID,没添加的就隐藏掉了
    这对于分类多站长,隐藏一个分类,就需要添加很多ID了

    • 懿古今
      懿古今2019-04-30 22:08  回复

      @RG博客这种选项一般输入都要带上-,比如不想显示分类8,则输入-8.主题选项有说明

  15. 热腾网
    热腾网 @回复

    博主够执着的。
    有学习就有进步。修改调试是最让人头疼痛苦的一件事,成功了有特别高兴。做站的应该都是这种体会吧。