谦卑的程序员






         静水流深

February 28, 2009

如何在WPMU中插入javascript,object等代码

Filed under: Wordpress (mu) — Eric Tou @ 12:55 am
Tags: ,

问题:无法插入javascript,object等代码

  在Wordpres mu中是无法插入javascript,object等代码的,这些在Wordpress中是可以的,但在Wordpress mu中据说是基于安全考虑而屏蔽了。这样就导致无法插入很多网站的wadge以及flash,比如flickr的图片展示,youtube的视频等等。

  其原理也就是在提交内容的时候,使用了filter函数将如script、object等关键字过滤掉而已。

解决方案1:直接修改代码

  可以通过修改代码的方法来解决此问题,需要修改的文件是/wp-include目录下的kses.php文件,在这个链接中有详细的说明。

  方法一是将过滤的代码注释掉。这样会导致所有的文章和注释都能够使用诸如<script>和<object>等标签。但将这些开放给注释用户会存在潜在的隐患。

  方法二是添加全局变量$allowedposttags的值,添加你所需要启用的标签。这样将只对提交的文章启用标签。这篇文章专门说明这个问题,可读性更强。

  不推荐这个方法,如此修改的地方多了需要专门的记录,每次升级以后还需要验证代码的有效性(代码的结构有可能变化),然后需要重新修改。总得来说原则是能使用插件就尽量不修改源代码。

解决方案2:使用有针对性的专门插件

  可以通过有针对的插件来解决该问题,比如要插入flickr的图片wadge就找flickr的插件或是图片插件,需要插入youtube的视频就找youtube的插件或是视频插件。

  坏处是这样的插件比较多,而且相当一部分是针对wordpress,筛选起来比较困难,水平也有点参差不齐。况且明明就是一件事情,却弄得有点头痛医头脚痛医脚,兼容性太差。

解决方案3:寻找通用的插件

  所以需要找一款能够关闭对嵌入javascript、object等常用的关键字过滤的插件。

  Widgetize-AnyHTML插件,让你能够在widget中嵌入标签,但只能在widget里,而且只支持一个AnyHTML Widget,不很实用。

  All text allowed插件,让你能够在文章(post)和页面(page)中嵌入标签。在主页的注释中提到了会移除<p>标签的问题。

  Unfiltered MU插件,让你能够在文章(post)和页面(page)中嵌入标签,经测试widget也可以。这个就是最终的解决方案。下载压缩包,解压后得到unfiltered-mu.php,如果要安装为全局插件则复制进wp-content/mu-plugins/目录,如果要逐个blog激活则复制进wp-content/plugins/目录。



No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

WPMU Theme pack by WPMU-DEV.