WORDPRESS后台发布新文章时,wp会自动过滤HTML等标签!! 如:
<script type="text/javascript"> alert("test!!!!"); </script>
会被自动过滤成:
alert('test!!!!');
在Wordpres mu中是无法插入javascript,object等代码的,这些在Wordpress中是可以的,但在Wordpress mu中据说是基于安全考虑而屏蔽了。
这样就导致无法插入很多网站的wadge以及flash,比如flickr的图片展示,youtube的视频等等。
其原理也就是在提交内容的时候,使用了filter函数将如script、object等关键字过滤掉而已。
怎样让发布新文章时不过滤HTML等标签呢?
解决方法如下:(3种)
方法一: 将wp-includes文件夹下的kses.php中的2句话屏蔽掉即可,如图所示:
//add_action('init', 'kses_init'); //add_action('set_current_user', 'kses_init');
上面这种做法是去掉wordpress对所有标签的过滤,但将这些开放给注册用户会存在潜在的隐患,不推荐使用!
方法二: 把自己想要不被过滤的标签添加到“不过滤的白名单中”!
具体操作: 在wp-includes文件夹下的kses.php中搜索 $allowedposttags,这是个不过滤标签组成的数组,里面所列即是不过滤的标签集合,假如你发表文章时带有style、script两组标签,又不想被不过滤,可在$allowedposttags中添加下面语句:
'style' => array(), 'script' => array()
将上面两句加入 $allowedposttags的一维数组(即最外面那层array)中即可!!
添加全局变量$allowedposttags的值,添加你所需要启用的标签。这种方法将只对提交的文章启用标签。
如此修改,每次升级wp以后还需要验证代码的有效性(代码的结构有可能变化),然后需要重新修改。总得来说原则是能使用插件就尽量不修改源代码。
方法三:(推荐)
找一款能够关闭对嵌入javascript、object等常用的关键字过滤的插件。
Unfiltered MU插件:让你能够在文章(post)和页面(page)中嵌入标签,经测试widget也可以。这个就是最终的解决方案。下载压缩包,解压后得到unfiltered-mu.php,如果要安装为全局插件则复制进wp-content/mu-plugins/目录,如果要逐个blog激活则复制进wp-content/plugins/目录。
注意:使用Unfiltered MU插件的方法插件代码后,发表/更新文章时,一定要记得切换至"html"编辑模式,再发布/更新,否则插入的相关代码会被转义!!
34条评论( 网友:20 条,站长:14 条 ) 网友评论{有您的评论更精彩....}