wordpress文章页之外链rel属性优化,替换默认rel=”noopener noreferrer”为rel=”nofollow noopener noreferrer”属性的方法

IT资讯
IT资讯
IT资讯
1233
文章
274
评论
2020-07-2700:25:10
评论
2,935 2233字

相信看到这个标题的小伙伴们会有些不解了,noopener noreferrer属性是什么呢?
noopener noreferrer属性就是一种给taraet="_blank"弹出的新窗口的一种安全属性。此属性的意思是告诉搜索引擎,这个链接不是本站链接!此功能是在WordPress中引入的,用于解决可被恶意网站利用的安全漏洞。博主通过了解才发现noopener noreferrer 属性并不是新发布的标准,而是在 WordPress 4.7.4 版开始的编辑器默认都会添加该属性,主要就是用来防范新窗口打开链接时可能存在的钓鱼攻击, 因此WordPress是作为安全性内容自动添加的。

可在实际运用中,这个属性存在的意义并不大。对于想SEO优化wordpress站点的小伙伴来说,给文章当中的外链添加rel="nofollow"属性更实际。

 

 

A:自动添加target="_blank"和rel="nofollow"属性

 

那么问题来了,如何快速的给wordpress文章页当中的外链自动添加target="_blank"和rel="nofollow"属性呢?
其实很简单,只要在wordpress当前使用的主题的"functions.php"文件当中的末尾加上下面代码就可以了:

 

// 自动给文章的外部链接添加target="_blank"和rel="nofollow"属性
add_filter( 'the_content', 'cn_nf_url_parse');
 
function cn_nf_url_parse( $content ) {
 
$regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>";
 
if(preg_match_all("/$regexp/siU", $content, $matches, PREG_SET_ORDER)) {
 
if( !empty($matches) ) {
 
$srcUrl = get_option('siteurl');
 
for ($i=0; $i < count($matches); $i++)
 
{
 
$tag = $matches[$i][0];
 
$tag2 = $matches[$i][0];
 
$url = $matches[$i][0];
 
$noFollow = '';
 
$pattern = '/target\s*=\s*"\s*_blank\s*"/';
 
preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE);
 
if( count($match) < 1 )
 
$noFollow .= ' target="_blank" ';
 
$pattern = '/rel\s*=\s*"\s*[n|d]ofollow\s*"/';
 
preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE);
 
if( count($match) < 1 )
 
$noFollow .= ' rel="nofollow noopener noreferrer" ';
 
$pos = strpos($url,$srcUrl);
 
if ($pos === false) {
 
$tag = rtrim ($tag,'>');
 
$tag .= $noFollow.'>';
 
$content = str_replace($tag2,$tag,$content);
 
}
 
}
 
}
 
}
 
$content = str_replace(']]>', ']]>', $content);
 
return $content;
 
}

 

 

 

B:通过数据库语句删除原来存在的属性

 

可加上之后,发现了新问题:原来文章当中的外链已经含有rel="noopener"属性的并不会进行替换。

那么,这样的情况要如何解决呢?

其实,也很简单,只要通过SQL语句来批量删除原来文章当中外链已经存在的这个属性就好了。我们需要批量修改的是“wp_posts”表。

代码如下:

UPDATE wp_posts SET post_content = REPLACE( post_content, 'noopener noreferrer', '' )

 

 

wordpress文章页之外链rel属性优化,替换默认rel=”noopener noreferrer”为rel=”nofollow noopener noreferrer”属性的方法

 

这样一来,先前发布的文章当中的外链原有的这个属性就会被删除了,就会给新加上自定义的rel="nofollow noopener noreferrer"属性。

 

 

 

 

C:禁用wordpress编辑器默认添加这个属性的功能

 

可是,在发布新文章的时候,wordpress编辑器会默认给文章当中的外链添加rel="noopener noreferrer"属性,那么要如何禁用呢,这个就更简单了,同样要在wordpress当前使用的主题的"functions.php"文件当中的末尾加上下面代码就可以了:

//禁用默认文章页链接当中的rel=“noreferrer”属性
add_filter('tiny_mce_before_init','wpb_disable_noopener');
function wpb_disable_noopener( $mceInit ) {
$mceInit['allow_unsafe_link_target']=true;
return $mceInit;
}

 

 

 

这样一来,这个问题就彻底解决了!是不是很简单?

 

 

 

 

 

  • Copyright ©  PC在线云端  版权所有.
  • 转载请务必保留本文链接:https://www.gaofumei.net/web/wordpress_web/9322.html
Orgorg速率最高可达1000Mbps,流畅观看Youtube 4K、TikTok,支持 Windows、Android、iOS、Mac,支持 微信、支付宝 付款!
全球数据中心,多点BGP保证速度,无视晚高峰,全天4K秒开,IPLC专线无惧封锁
全IEPL /青云跨境,高峰时期稳定8K播放,流媒体影视, ChatGPT 解锁保障,客户端无日志保护您的隐私安全,稳定运行5年+
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: