当前位置: 首页 > news >正文

WordPress过滤文章插入链接rel属性noopener noreferrer值

WordPress过滤文章插入链接rel属性noopener noreferrer值

在保存文章的时候,WordPress会自动过滤文章内容中的链接,具有target属性的链接会自动添加rel="noopener noreferrer",该属性是为了预防跨站攻击,站内链接似乎没有必要添加,但我习惯站内链接也设置target属性。

将以下代码复制到主题文件functions.php

function bzg_targeted_link_rel($rel, $link_html) {$site_url = parse_url(site_url());preg_match('/href=[\'\"](https?:\/\/.*)[\'\"]/i', $link_html, $matchs);if(empty($matchs[1])) return '';$target_url = parse_url($matchs[1]);if($target_url['host'] == $site_url['host']) {return '';}return $rel;
}
add_filter('wp_targeted_link_rel', 'bzg_targeted_link_rel', 10, 2);

此时,保存文章不会对站内链接添加rel属性了,对于之前已经发表的文章,需要在数据库修改(操作前先备份一下数据库):

UPDATE `wp_posts` SET `post_content` = replace (`post_content`,' rel="noopener noreferrer"','') WHERE `post_content` LIKE '% rel="noopener noreferrer"%'

这条SQL语句会替换掉所有链接中的rel属性,包括站外链接,但站外链接应该添加上rel属性,可以使用下面的正则表达式把站外链接提取出来:

$str = file_get_contents('beizigen.sql');
$str = stripslashes(preg_replace("/[\t\n\r]+/", "", $str));
preg_match_all('/<a.*href="(https?:\/\/(?!\www\.siyege\.com).*".*)>.*<\/a>/Ui', $str, $matchs, PREG_PATTERN_ORDER);
print_r($matchs[1]);

事实上我在执行SQL语句时没有考虑到站外链接的情况而走了弯路,如果直接使用Notepad++之类的文本编辑器正则表达式替换,就不需要SQL语句替换和手动检索站外链接了。
查找正则表达式如下:

<a.*?href=\\"(https?:\/\/\www\.siyege\.com.*?)\\".*?>

替换为:

<a href=\\\"\1\\\" target=\\\"_blank\\\">

建议单独替换wp_posts表,可以在phpMyAdmin中只导出wp_posts表进行替换,为了安全起见,操作前先备份好数据。

附:之前对noopener noreferrer不太了解,担心影响SEO,研究之后发现对具有target属性的链接添加noopener noreferrer还是有必要的,看来白折腾了。


文章转载自:

http://MJ9zn6Gz.wknjy.cn
http://aGdqApDB.wknjy.cn
http://Q6sPfRWX.wknjy.cn
http://DVxVrZTg.wknjy.cn
http://oFp2FgAI.wknjy.cn
http://wuHFNSN1.wknjy.cn
http://3TQDc4ig.wknjy.cn
http://GOQxxSIV.wknjy.cn
http://QVzr2yv2.wknjy.cn
http://pMbkCCZk.wknjy.cn
http://ULVfuzER.wknjy.cn
http://yMOKAtYN.wknjy.cn
http://a0NfReR0.wknjy.cn
http://P50ca92k.wknjy.cn
http://KEwsWJ8T.wknjy.cn
http://N6rqQvGa.wknjy.cn
http://eucXaTNF.wknjy.cn
http://V1SVa8FZ.wknjy.cn
http://zCV2RZR3.wknjy.cn
http://pqyCdMjg.wknjy.cn
http://HZN5pFu5.wknjy.cn
http://2wEvAWpm.wknjy.cn
http://7llx0hRj.wknjy.cn
http://0gNwa2Hv.wknjy.cn
http://FY1muYCU.wknjy.cn
http://g4Xc9hxE.wknjy.cn
http://6F9L4qib.wknjy.cn
http://jwT7IdYh.wknjy.cn
http://xaLxlzw0.wknjy.cn
http://74pSHtRc.wknjy.cn
http://www.dtcms.com/a/370511.html

相关文章:

  • AwesomeBump Windows上编译细则
  • 2026届大数据毕业设计选题推荐-基于大数据旅游数据分析与推荐系统 爬虫数据可视化分析
  • NIOS ii工程移植路径问题
  • Redis中的List数据类型
  • 设计一个 AB 测试平台
  • MATLAB2025-安装Embedded Code Support Pacjage for STM32 Processors
  • 去中心化投票系统开发教程 第三章:智能合约设计与开发
  • 基于Matlab的MEMS陀螺仪Allan方差分析与随机误差参数识别
  • 植物大战僵尸融合版安装包,下载安装教程
  • 基于STM32的智能宠物屋系统设计
  • SQL 入门指南:排序与分页查询(ORDER BY 多字段排序、LIMIT 分页实战)
  • (算法 哈希表)【LeetCode 349】两个数组的交集 思路笔记自留
  • 【PCIe EP 设备入门学习专栏 -- 8.1.3 PCIe EP AXI Bridge Module】
  • MySQL集群高可用架构(MHA高可用架构)
  • 多线程任务执行窗体框架jjychengTaskWinForm
  • GPIO介绍
  • 浅析Linux内核scatter-gather list实现
  • MotionSound-简单易用的文本转语音工具
  • 【左程云算法03】对数器算法和数据结构大致分类
  • 2.2 Web和Http
  • CuTe C++ 简介02,gemm_device cuda kernel 的实现
  • uniapp开发APP隐私检测不通过解决
  • Monorepo 是什么?如何使用并写自己的第三方库
  • 【56页PPT】华为集成服务交付ISD业务变革总体方案(附下载方式)
  • 九月六号练习题
  • 深度学习——PyTorch保存模型与调用模型
  • Go基础(⑤Consul)
  • 验证平台中所有的组件应该派生自UVM中的类
  • 企业微信智能表格高效使用指南
  • 自动化运维之ansible