WordPress 评论链接重定向跳转

此文受启发于《为评论、留言者的主页链接添加链接跳转》一文,不过可惜的是风之逸童鞋介绍的方法是在 Bo-Blog 平台下,并不适用于 WordPress,但是我深信 WordPress 的强大比 Bo-Blog 而言有过之而无不及,所以我坚信 WordPress 一定也有类似的方法可以实现评论者链接的重定向跳转。

先说一下为什么要对评论者的链接进行重定向跳转处理。最主要的原因就是为了防止泛滥的 Spam,如果对评论者的链接进行重定向跳转,那么就算有 Spam 突破防线成功在你的页面驻扎,你也无需担心 Spam 会和当前页面抢权重了。或许你会说评论者的链接本来就已经加了 rel="external nofollow" 属性,再给链接做跳转处理是不是多此一举了?我当然不会做那样没有意义的事情,第一,百度这丫是不认识 nofollow 这个单词滴,加了 nofollow 也是白搭;第二,Google 对 nofollow 的权重分布方法已经调整过了,站内链接有可能会抢去当前页面的权重,所以仅靠 nofollow 也是不行的了。

问题的解决方法在我爱水煮鱼的博客中找到了答案:Comments Link Redirect 插件

我爱水煮鱼称其为防 Spam 的终极办法,此言不虚啊。不过我向来比较排斥使用插件,我看了一下 Comments Link Redirect 插件的代码,完全可以复制到 functions.php 中来代替使用插件。将以下代码复制到主题文件夹下的 functions.php 中即可。

//comments link redirect
add_filter('get_comment_author_link', 'add_redirect_comment_link', 5);
add_filter('comment_text', 'add_redirect_comment_link', 99);
function add_redirect_comment_link($text = ''){
    $text=str_replace('href="', 'href="'.get_option('home').'/?r=', $text);
    $text=str_replace("href='", "href='".get_option('home')."/?r=", $text);
    return $text;
}
add_action('init', 'redirect_comment_link');
function redirect_comment_link(){
    $redirect = $_GET['r'];
    if($redirect){
        if(strpos($_SERVER['HTTP_REFERER'],get_option('home')) !== false){
            header("Location: $redirect");
            exit;
        }
        else {
            header("Location: http://wange.im/");
            exit;
        }
    }
}

然后再看评论者和评论者留言中的链接,形式如下:

http://wange.im/?r=http://评论者的URL

不过据 yanxc 同学测试,如果使用了 cos-html-cache 静态化插件,会导致我爱水煮鱼的 Comments Link Redirect 插件无法正常使用,因为我没有用过任何缓存或者静态化的插件,这一点我不得而知。不过 yanxc 给出了另一个评论者链接重定向跳转的解决方案,同样是插件,经我测试,同样也是可以将代码复制到 functions.php 中使用,代码如下:

//comments link redirect
add_filter('get_comment_author_link', 'add_redirect_comment_author_link', 5);
add_filter('comment_text', 'add_redirect_comment_text', 99);
function add_redirect_comment_author_link($text = ''){
$text=str_replace("href=",'href="javascript:window.location=',ereg_replace('href='[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]'',"0"", $text));return $text;
}
function add_redirect_comment_text($text = ''){
$text=str_replace("href=","href='javascript:window.location=",ereg_replace('href="[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]"',"0'", $text));return $text;
}

然后再看评论者和评论者留言中的链接,形式如下:

javascript:window.location='http://评论者的URL'

两个方案有相同之处,也各有异同各有优点,但最终目的都是一致的,就是堵住 Spam 的臭嘴,用 WordPress 的童鞋们可以各取所需。

  1. Pingback: 【WordPress技巧】[转]WordPress 评论链接重定向跳转 ‹ 清音陋屋—清音陋室,陋音,殇音阁,经典轻音乐,经典纯音乐,忧伤轻音乐,忧伤纯音乐,忧伤散文,经典配乐

  2. 博主我的一个博客别人留言加上他们网站,为什么点击他们的用户名跳转的还是我自己的博客首页呀?[link]http://www.51xingdong.com[/link]

  3. Pingback: WordPress评论链接重定向跳转的方法[iNove主题测试] | 文搜网络

  4. Pingback: 如何将WordPress的评论链接进行重定向跳转 | 中文网络赚钱工具导航

  5. 你好,我试用了一下水煮鱼的插件,或是更改function文件,结果跳转的时候,都转到了自己的主页,比如:链接显示为:http://wange.im/?r=http://www.lxlong.net 但是点击之后却跳转到自己的主页:http://wange.im,请问有什么方法可以解决,谢谢

  6. Pingback: 给wordpress中的链接添加重定向 | Alien的博客

  7. Pingback: 编辑comment-template.php,实现评论者链接外置。 | 温哥

  8. Pingback: WordPress实现评论者网址重定向跳转 - 潇雨博客www.xycnn.net

  9. Pingback: Wordpress实现评论者网址重定向跳转 - 小孙博客

  10. Pingback: 评论者网址重定向跳转 - Microhu's Blog -『微狐网』

  11. 我感觉好像是因为我侧边栏的评论显示头像的原因,别人的好像都可以,别的主题也没有问题,晕了。呜呜

  12. 来到万戈的博客真是受益匪浅呀,比起木木公布的代码容易并且也注释的比木木清楚,这可是人气飞升的来源的

  13. Pingback: 測一測 » 减少SPAM让WordPress评论链接重定向跳转

  14. 万戈你好,我想问下博客在文章和主页上作者那个地方的链接你是怎么去掉的,或是转到自己的首页,我在网上好像搜了很久都搜不到资料

  15. Pingback: wordpress评论链接重定向跳转 » 晓潘随谈

  16. 万哥,用了这个方法后,Mail to Commenter Options插件给好友回复时发送的邮件链接也在前边加上了“http://domain.com/?r=”,点击后跳转到了博客的首页,请问万哥有什么好的解决法办吗?

  17. Pingback: 大话Spam - 不知所云 Leo.N's Blog

  18. 既然在百忙之中,都愿意敲几个字,我也不想这样做的。

    现在的站长就是急功近利,盲目求成,追求SEO...太坑人了

  19. Pingback: Comments Link Redirect | 左岸印象

  20. 求教一下,我按照博主的第一个方案把代码复制到了functions.php中,但还是没有效果啊。我没有用cos-html-cache 静态化插件之类的

  21. 我今天也研究了下。
    方法:
    进入wp-incloud,下载comment-template.php。
    然后找到“$author“;
    在其中插入 target="_blank"
    然后再上传。
    ok。

    如果万大哥不介意的话,也可以去掉no_follow :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:

  22. Pingback: wordpress评论者网站在新页面打开 | 闲云野鹤情侣博客

  23. 说实在的,你博客绝大多数技术都是很实用的,很人性化的,唯独这一个我表示强烈反对,为了防止所谓的spam,你把很多无辜的人给枪毙了。

  24. 我的怎么不好用啊 加入第一段代码后 ~

    效果是有了 但是 点击后显示 403#

    Access to this resource on the server is denied!

  25. 貌似这个不起作用在这个主题上,无论我加JQuery还是什么插件都无效 :?: 有点难度
    加了后显示的确实是:http://itaboutweb.com/?http://评论者网址,但是却没有正常跳转,而是停留在了主页上, 原本主页的地址为http://itaboutweb.com/,现在http://itaboutweb.com/?http://评论者网址也成了主页汗死,都不晓得怎么弄才能让他正常跳转了。

  26. Pingback: 为wordpress评论者链接转化为跳转链接|超人流水账

  27. 换了第二种以后,JS代码和Thread Comment有冲突,会让嵌套回复的内容变为空白。

    但是第一种跳转的时候会出错,错位信息是:
    “403 Forbidden
    Access to this resource on the server is denied!
    --------------------------------------------------------------------------------
    Powered By LiteSpeed Web Server
    LiteSpeed Technologies is not responsible for administration and contents of this web site! ”

  28. 技术人才啊,不过你这样就是有意的把博友的链接去掉被,你去别人的博客上不也想留下自己的链接么,己所不欲勿施于人,我觉得你这么做不太好。

    • 不是把链接去掉哟,还是可以链接到评论者网站的,只不过是做了转向而已,你可以试一下。
      而且评论链接本来就是nofollow的,没有评论者是为了分得权重来留言的吧,除非spam,所以这招只是针对spam的

  29. 围堵 + 绞杀 英勇的 Spam 可谓各路豪杰大显身手! :roll:
    现在感觉 Spam 虽然很厉害,但有极少会漏网。
    另外,缓存插件似乎与我们常用的一些插件都会有冲突,从未使用过呢。

    • 狼兄,我没有你那样的文采,所以只好找点技术文章来充数
      谢谢你的建议哟,等15号我回到了上海,有好多生活随笔等着我写呢 :mrgreen:

      • 别啊,就我这还文采...都是破烂文章,我自己都看不过眼,晕...
        我现在用办公室电脑上你博客,IE6,不那么卡了,但是还是有一点,有时打字会有一点点延迟现象。
        我这两天真是偷懒到家了,一直在写那个系列文章,哈哈。

        • 我倒是很喜欢你那种风格的小说呢,可以让我回味一下大学生活,很有共鸣的感觉,真的很期待哦
          至于IE6嘛,想抛弃又不舍得,最主要是我自己用IETester没发现这样的问题,不好修改~~~

    • 错位问题已经解决啦,原来是字体问题,我是XP系统,没有微软雅黑,所以看上去就会有错位的现象,我装了个微软雅黑字体就好了