kn007的个人博客
♥ You are here: Home > 软件与网络 > php > 修复博客bug,代码高亮的链接自动添加了nofollow问题

修复博客bug,代码高亮的链接自动添加了nofollow问题

by | 24 Comments

提醒:本文最后更新于 2642 天前,文中所描述的信息可能已发生改变,请仔细核实。

在《无事瞎说几句,顺便说下几个问题》中的#6楼,我提到了


现在解决了,原代码是

add_filter('the_content','the_content_nofollow',999);
function the_content_nofollow($content){
   preg_match_all('/href="(.*?)"/',$content,$matches);
   if($matches){
       foreach($matches[1] as $val){
           if( strpos($val,home_url())===false ) $content=str_replace("href=\"$val\"", "href=\"$val\" rel=\"external nofollow\" ",$content);
       }
   }
   return $content;
}

修改为:

add_filter('the_content','the_content_nofollow',999);
function the_content_nofollow($content){
   preg_match_all('/href="(.*?)"/',$content,$matches);
   if($matches){
       foreach($matches[1] as $val){
           if( strpos($val,home_url())===false ) $content=str_replace("<a href=\"$val\"", "<a href=\"$val\" rel=\"external nofollow\" ",$content);
       }
   }
   return $content;
}

就好了。。。坑爹啊。。。

不过更推荐小天转的js源码,源码如下:

<script type="text/javascript">
function externallinks()
{
if (!document.getElementsByTagName) return;
var anchors = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++)
{
var anchor = anchors[i];
if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external nofollow")
{
anchor.target = "_blank";
}
}
}
window.onload = externallinks;
</script>

以上这段代码,放在footer.php就可以用,他会对external nofollow标签添加_blank新窗口打开链接的模式。(functions.php那个就省了)

注,我放在footer.php的下面源码之前:

<?php wp_footer(); ?>
</body>
</html>

footer.php的后处理就是好啊。。。预先处理果然有些弊端。。。

转载请注明转自:kn007的个人博客的《修复博客bug,代码高亮的链接自动添加了nofollow问题

donate
有所帮助?

Comments

24 Comments立即评论
  1. 我想说那篇文章评论部分Tifrek提了一个更简洁的 但我没有试过 懒得弄了=、=

    1. MOD回复

      @凤翼天堂: 地址给我吧

    2. @kn007: :!: 就那篇评论 每一楼都有我看得懂或者看不懂的方法= =具体可用性和易用性我就不知道了

    3. MOD回复

      @凤翼天堂: 给我个地址会手酸啊。。。。我忙N件事一起,烦

    4. @kn007: - -直接转吧 神爱:额...function.php里可以直接写吧...加个代码而已...
      用到的东西...
      $return
      add_filter
      Tifrek:@ 敖天羽:反正你的comment_list部分的超链接只有评论者链接嘛,就来个jQuery(".comment_list a").click(function() {window.open(this.href);return false});

    5. MOD回复

      @凤翼天堂: functions.php,你们为什么老是不写最后那个 s。。。命令我都清楚。。。jQuery有这个功能,忘记了。。。(根本没记)。。。试试去

  2. :razz: 每次都忘记

    1. MOD回复

      @凤翼天堂:
      jQuery(".comment_list a").click(function() {window.open(this.href);return false});
      对class类有要求,通用性低了,不是 .comment_list的都没用。。

    2. @kn007: :!: 对的 所以需求部分要写

    3. MOD回复

      @凤翼天堂: 我用的是:
      jQuery(".commentlist a").click(function() {window.open(this.href);return false});
      只是_blank效果,只是不会添加nofollow,不过我有其他实现

    4. @kn007: :!: 我觉得只要能达到效果就行了

    5. @kn007: :razz: 评论等级 WE挨批2了

    6. MOD回复

      @凤翼天堂: 用上面代码的话,reply都新窗口了。。。覆盖面积太多惹的祸。。。。。你应该常来,或者我们可以交换下友联,我去加上先。。你加不加上是你的事。。

    7. @kn007: :!: 别别别这样……目前我还没准备改标准和加友链呢 而且高三了也没空

    8. MOD回复

      @凤翼天堂: 。。。没事嘛,你加上其实也不会怎么样,不加其实也不会怎么样。。

  3. 点reply怎么会弹窗= =

    1. MOD回复

      @凤翼天堂: 因为reply包括在commentlist类下

  4. :!: 果然还是我日志里提到的大叔的代码好用 一点事情都没有

    1. MOD回复

      @凤翼天堂: 嗯,squid没搞好,我没弄清楚,你填写的域名是什么,那个红心桃没出来。。

    2. @kn007: :razz: 既然如此我考虑一下加一个分类好了>.<有很多朋友单链很久了我不好意思

    3. MOD回复

      @凤翼天堂: 呵呵

    4. MOD回复

      @凤翼天堂: 总算出来了 :cry: :cry: :cry: :cry: 吃饭去

    5. @kn007: :arrow: 博客名是 空の領域 哟~ :grin: 抄完作业想个分类名字加上 :lol:

    6. MOD回复

      @凤翼天堂: 已更正,不好意思。。。

icon_wink.gificon_neutral.gificon_mad.gificon_twisted.gificon_smile.gificon_eek.gificon_sad.gificon_rolleyes.gificon_razz.gificon_redface.gificon_surprised.gificon_mrgreen.gificon_lol.gificon_idea.gificon_biggrin.gificon_evil.gificon_cry.gificon_cool.gificon_arrow.gificon_confused.gificon_question.gificon_exclaim.gif