纯代码实现外链自动加nofollow属性和加密跳转以及新窗口打开

虫子君
虫子君
虫子君
635
文章
277
评论
2019年12月10日23:14:30 2 1,968 3134字阅读10分26秒

之前分享过几篇文章有讲到过纯代码实现WordPress文章内页自动添加nofollow属性、GO跳转、_blank新窗口打开、增加图标等等。一些功能,通过三四篇文章分不同时的时候发布出来的,如果大家没有看过可以在下方的内容当中看看。

纯代码实现外链自动加nofollow属性和加密跳转以及新窗口打开
外部网址自动添加nofollow属性和_blank新窗口打开

小伙伴们一定知道“nofollow”属性,其意思是告诉搜索蜘蛛,这个链接跟我没有关系,你不用抓了。很多时候我们的网站总是会需要插入一些外部网址,但是新站的权重太低,尽可能节省网站权重的流逝,

点我查看
纯代码实现外链自动加nofollow属性和加密跳转以及新窗口打开

纯代码实现的功能

其中以上的几篇文章,每一篇文章的代码虫子君都有用过,但是都是只能实现其中一部分自己需要的功能,并不能尽善尽美的完成我需要的所有功能,比如我需要外部链接通过新窗口打开,那么我又要添加一段代码,我需要外链的地址使用beset加密,又要改代码等等的问题。

或许对于新手来说,这个没什么,毕竟自己只是粘贴一下代码而已。殊不知这些无用的代码并不能给你的博客带来好的结果。

今晚没事的时候,我就盯着这些代码看了一遍又一遍,然后发现其中的共通之处蛮多的。所以我将代码给改了改,可以实现我所需要的所有功能需求,并且代码量节省了10倍以上。

//虫子君原创:https://chonzi.com/8603.html
add_filter('the_content','web589_the_content_nofollow',999);  
function web589_the_content_nofollow($content){  
preg_match_all('/href="(http.*?)"/',$content,$matches);  
if($matches){  
foreach($matches[1] as $val){  
 if(strpos($val,'://')!==false && strpos($val,home_url())===false && !preg_match('/\.(jpg|jepg|png|ico|bmp|gif|tiff)/i',$val))
$content=str_replace("href=\"$val\"", "rel=\"nofollow\" target=\"_blank\" class=\"a-one\" href=\"" . get_bloginfo('wpurl'). "/go?url=" .base64_encode($val). "\"",$content);
}  
}  
 return $content;  
}

以上的代码就可以实现太多的功能;

外链自动添加nofollow属性

外链自动添加target="_blank"新窗口打开

外链自动添加base64加密隐藏实际地址

外链自动添加go跳转

并且自动排除媒体文件

以及最重要的一点就是可以在此基础上给外链增加单独的图标(自动排除内链)

演示地址

 

测试环境

虽然自己忍不住有点小兴奋,第一次测试PHP修改,居然成功实现自己需要的所有功能了。为此我特意在本地和生产环境中都做过测试,得出的结论是,以上代码的兼容性非常的高,几乎适用大多数的主题。当然仅仅是WordPress主题哈,其他的主题我没有测试过。如果您第一次玩WordPress的话,建议你看一下我写的WordPress入门教程

测试环境
网站程序主题时间
WordPress 5.3中文版柒比贰\begin主题2019年12月9号

以上两个主题当中测试正常使用,所以就没有在其他的主题上面测试了。

使用方法;

其中上面的代码使用起来是很简单的,直接粘贴到你的主题的function.php的最后就好了。然后这里涉及到一些问题,就是外链地址需要一个GO跳转,所以还需要这个跳转的代码。go跳转的代码还是使用上次我推荐的代码好一点,毕竟很漂亮。

纯代码实现外链自动加nofollow属性和加密跳转以及新窗口打开

纯代码实现外链自动加nofollow属性和加密跳转以及新窗口打开
代码实现柒比贰B2主题外部链接隐藏并链跳转功能

一直以来都是依赖插件在实现各种各样的功能,虫子君自己没有怎么折腾网站功能方面的东西,最近一段时间一直在研究文章内部链接的问题,其中有一个非常重要的事情就是,网站更新的内容大部分会存在外链的可能。

点我查看

关于GO跳转的部分,您参阅一下上文,可以得到一个很好的答案,这里不再重复赘述。

这里主要是讲讲如何给外链地址添加图标。

其中我在以上的代码中添加了一个“class=\"a-one\"”的属性和属性值。这样就方便后面我们直接使用CSS放上样式。

//虫子君原创https://chonzi.com/8603.html
.a-one{padding-right: 15px; background: url('https://cdn.chonzi.com/wp-content/uploads/19d0b2c513fd3c.png') no-repeat right;}

这上面的css文件,您可以加到任何可以加载css文件的地方,一般是主题的style.css当中。

begin主题和柒比贰主题,都有可以加载css的窗口,所以可以再WordPress的后台直接添加。

授人以鱼不如授人以渔

这次的代码都是自己好运气得来的,谈不上有什么精进,不过总的来说也算是有些许收获。

这里跟大伙普及一些内容,方便您后面自己修改。

1、修改排除媒体地址的权限

有时候我们的网站,有外链的视频,或者是音频文件的时候,就不得不排除这些文件也会因为代码的影响了。虽然浏览器可以解析出来beset加密,但是不代表其他的功能也可以看懂。

所以以下代码中的png、jpg等等这些文件的后缀,可以根据自己的实际需求增加,或者减少。

if(strpos($val,'://')!==false && strpos($val,home_url())===false && !preg_match('/\.(jpg|jepg|png|ico|bmp|gif|tiff)/i',$val))

2、重要功能解析

$content=str_replace("href=\"$val\"", "rel=\"nofollow\" target=\"_blank\" class=\"a-one\" href=\"" . get_bloginfo('wpurl'). "/go?url=" .base64_encode($val). "\"",$content);

这里面的代码实现了主要的功能,比如外链自动添加base 64位的加密,以及“nofollow”属性等等,还有新窗口打开等等所有的设置都是在这一段代码中实现的。

不知不觉间现在已经过了十一点了,希望我的教程能够帮到你,再见!

我是虫子君,一个自命不凡的翩翩少年。。。。

继续阅读
  • 欢迎来“给我投稿”网友会因为你的帮助而感激。
  • 文章链接:https://chonzi.com/8603.html

您必须才能发表评论!

评论:2   其中:访客  1   博主  1
    • 叶忠文博客 叶忠文博客 1

      后台不是可以设置自带nof吗?何必弄的这么麻烦