WordPress支持超链接增加magnet、ed2k 新协议的解决办法
今天无意中发现在wordpress当中插入的磁力超链接megnet跟ed2k这种出现了问题,插入后保存就被自动删除了
开始还以为是后台的WP出了问题,随后才发现原来是不支持导致的。wordpress为防范SQL注入、XSS等攻击,Wordpress会在保存内容时,自动过滤内容,导致对超链接中不支持的协议protocol头例:magnet:?自动删除掉。为了达到目的,需要在Wordpress的超链接中增加对magnet、ed2k等新协议的支持,就开始动手弄一下。
方法有三种:
方法一:
修改 wp-includes/post.php,将相关内容注释掉。
但这就等于抛弃Wordpress的防范体系,不太安全,不建议用!!
//$postarr = sanitize_post($postarr, 'db');
方法二:
修改 wp-includes/functions.php 的function wp_allowed_protocols() ,直接增加需要添加的新协议
不过如果升级wp版本后,必须再次修改
if ( empty( $protocols ) ) {
$protocols = array( 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed',
'telnet', 'mms', 'rtsp', 'sms', 'svn', 'tel', 'fax', 'xmpp', 'webcal', 'urn' ,'magnet','ed2k');
}
方法三:
更改主题文件theme,增加新协议支持
修改 wp-content/themes/对应的theme名称/functions.php ,增加如下内容至左后一行保存即可
function ss_allow_magnet_protocol( $protocols ){
$protocols[] = 'magnet';
return $protocols;
}
function ss_allow_ed2k_protocol( $protocols ){
$protocols[] = 'ed2k';
return $protocols;
}
add_filter( 'kses_allowed_protocols' , 'ss_allow_magnet_protocol' );
add_filter( 'kses_allowed_protocols' , 'ss_allow_ed2k_protocol' );
版权声明:
作者:ivpsr.com
链接:https://ivpsr.com/1714.html
文章版权归作者所有,未经允许请勿转载。
THE END