存档

文章标签 ‘火车头’

火车头发布wordpress a链接非http协议被过滤 如何解决

2015年12月28日 1 条评论

这两天在和老廖在弄wordpress发布磁力链的时候发现,如果链接地址是磁力链,发布上去会被替换。怎么测试都不行,把post接口发给公司的程序猿,他把里面所有涉及过滤的参数都注释掉了,不影响发布,但是还是被替换掉。然后没有办法,去百度搜了一下,没找到解决办法,但是找到了另外一个发布接口,抱着试一试的心态下载试了试,发现还是被替换掉。

于是开始研究发布接口文件,结果看到了接口的作者信息是个淘宝店的网址,点击进去,刚好店主也在,于是就咨询了一下,结果他说可以解决,收费十元。急着用,也就直接拍下了,反正也不够买盒烟的,店主有意思,说今天没开张,开张了都不收钱了。

分享他的解决方案
在wp-includes目录内找到post.php,搜索以下内容:
$postarr = sanitize_post($postarr, 'db');
注释掉,就可以了。

十块钱,买了三句话,果然熟悉wordpress的,知识就是金钱,古人诚不欺我。


之前因为问过Cxx大神,他上线之后也很热心,我告诉他上面的方法,他说那个参数不能随便改,改了之后wordpress就不防注入了,xss什么的,好像就可以顺利插入了。
然后半夜23.51分收到发来的解决方案(感动的不要不要的),思路:修改wordpress文件,在采集的时候替换下,然后在主题里替换回来。

他的文件名字我也觉得描述很准确:火车头a链接非http协议被过滤.txt,一起来看看:
火车内容字段添加替换规则
将字符串
href="magnet:?
替换为
href="http://magnet:?

然后将下面的代码加入到你正在使用的主题文件里functions.php底部即可
function fixmagnetlink($text) {
$return = str_replace('http://magnet:?', 'magnet:?', $text);
return $return;
}
add_filter('the_content', 'fixmagnetlink');

思路很明确,看完之后觉得受益匪浅,默默地膜拜一下。