WordPress 不支持 ed2k 和 magnet 协议链接

因为大象网这个网站不光是给网友浏览,自己也会时不时查看一些记录的心得等,所以有些页面是经常更新的,比如Windows微软原版系统ISO镜像下载,这次更新的过程中发现之前的下载链接有些出了问题,而大象网为了更好用户体验便及时修改了下载链接,而修改的过程中发现了一些问题。

WordPress 这款CMS为了防范SQL注入、XSS等网络安全防范,当用户保存文章内容的同时,会对文章内容进行自动过滤,所以当我插入magnet和ed2k链接的时候就被自动删除掉了,解决这个问题也很简单,我们修改WordPress目录中“wp-includes/post.php”,将相关内容注释掉就行了,但别着急修改,先往下看看再决定。

//$postarr = sanitize_post($postarr, 'db');

而此时如同“我家大门常打开,开放怀抱等你”,WordPress自身的安全措施消失了,所以大象网找到了其他解决方法。

如果你熟悉WordPress的话,肯定对“ wp-includes/functions.php”这个目录并不陌生,而WordPress又列出了可以使用函数“wp_allowed_protocols()”检索的良好协议,我们在这个页面中添加新协议支持就可以了,先来看看原本的页面。

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' );
        }

在这段代码尾部’urn’ 添加增加需要添加的新协议,比如我需要“magnet和ed2k”这两个协议的支持(尽量多看两眼逗号分号,避免输入错误)。

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');
        }

我们想要的效果也实现了,不过现在出现了新的问题,我们修改的是WordPress 这个程序所以当每次进行版本升级的同时,“functions.php”这个文件都会被覆盖,所以当升级的时候我们必须要再次手动修改这个文件。

<?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' );

上面这个解决方案就比较适合我们大象网了,我们既然知道了WordPress中有“functions.php”,那么主题目录中肯定也是有这个目录存在的,毕竟我们修改或升级主题的频率又比较小,所以我们修改“wp-content/themes/你的主题名称/functions.php”这个页面对其增加新协议支持就可以了。

赞(2) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《WordPress 不支持 ed2k 和 magnet 协议链接》
文章链接:https://www.kelephant.com/oam/4430.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

登录

找回密码

注册