怎样在 WordPress Mu 多用户版的文章里使用Javascript, object 等代码

WordPress Mu
从自己的原 WordPress 导入了所有的文章到 WordPress Mu 里,意外发现所有的YouTube的视频全不见了。而且自己怎么加也加不上,每次将<object>..</object> 代码贴到文章,他们保存就会意外地消失了。同样的事情也发现在我想添加 <script>...</script> 脚本代码到文章的时候。我猜想可能由于是MU的面向大众作者的特殊性,程序员从安全性的考量将一些有危险性的代码从文章和评论里禁止了。但,我自己的多用户WordPress MU 只是我自己用,应该不会有什么安全担心,而且我真的需要将这些 YouTube 视频放在博客里。

于是我开始找解决之法。WordPress Mu 的官方支持论坛没有什么正式的方法。有些人建议下载插件将Javascript放到侧栏里,这点肯点是可行的:因为我目前用的 K2 主题就有文本代码小工具可用。但我需要将他们放在文章里。没办法,只好改动源代码了。

要改的文件在 /wp-include 目录里,文件名叫 kses.php。

最快捷的改动就是将该文件的最后两行代码隐掉:

add_action(‘init’, ‘kses_init’);
add_action(‘set_current_user’, ‘kses_init’);

但是,这样并不是我推荐的。因为这样,整个 kses.php 功能都没有了,也就是说所有的文章、评论都有可能含有破坏性的代码。所以,我还是愿意将一些我自己需要的代码加到被允许的范围内,而不是全部放过。所以,最好是改动 $allowedposttags 这个全局变量,这样只有文章的保存会受影响而评论照样会被过滤。

大概在 kses.php 的 184 行,我开始添加下列代码来开放 <script><object>

//added by WebGuru on 2007-10-06
‘script’ => array(
‘type’ => array(),
‘src’ => array()
),
‘noscript’ => array(

),
‘object’ => array(
‘height’ => array(),
‘width’ => array(),
‘type’ => array(),
‘data’ => array(),
‘allowfullscreen’ => array(),
‘id’ => array()
),
‘param’ => array(
‘name’ => array(),
‘value’ => array()
),
’embed’ => array(
‘width’ => array(),
‘height’ => array(),
‘type’ => array(),
‘src’ => array()
)

有了这些,我基本上解决了在MU 文章里贴 YouTube 视频和 Javascript 脚本的问题。但我是不满意这种修改核心代码的做法,如果你们能找到一些更好的方法,或者写个插件什么的来解决这个问题,请让我知道,先谢了。

My English Post URL: How to enable or use Javascript and Flash embed in WordPress MU

20 Responses to “怎样在 WordPress Mu 多用户版的文章里使用Javascript, object 等代码”

  1. bressonlee

    按照您的方式修改了,但是系统出现错误讯息,整个网站也无法运作,不知问题出在那边。

    Parse error: syntax error, unexpected T_STRING, expecting ‘)’ in /home/hsphere/local/home/a551/mass-age.com.tw/wpmu/wp-includes/kses.php on line 185

    Parse error: syntax error, unexpected T_DOUBLE_ARROW in /home/hsphere/local/home/a551/mass-age.com.tw/wpmu/wp-includes/kses.php on line 187

    [Reply]

  2. WebGuru

    你的第一个问题是要注意括号()的完整性,即有开,也要有关。另外,不要使用中文全码的小括号。

    第二个问题看是不是你的 “=> ” 使用上有问题,也可以注意一下是不是用了中文的符号。

    [Reply]

  3. NakedFish - 裸鱼 » 解决WordPress MU撰写文章时过滤掉HTML的问题..

    […] 把博客从WordPress和升级到WordPress MU后,导入以前的数据发现能正常显示。但修改某日志后发现WP MU不能显示日志内容中的HTML标签。我记得WP是可以使用HTML标签的,于是写新日志测试,结果一样:HTML标签不能显示,从MYSQL中直接添加含HTML的内容能正常显示。看来是在日志提交后被过滤了。。 在网上找了N久,也在WordPress中文社区发帖求助,都没结果。还好找到这篇文章,按方法搞定。。 […]

  4. 蓝蓝小雪

    参考 http://dev.robertmao.com/2007/07/18/get-rid-of-boring-wpmus-post-htmljavascript-filtering/

    [Reply]

    超凡不脱俗 于 August 29th, 2009 回复:

    谢谢小雪给出的链接。不过,这样的话所有的HTML和Javascript代码都不会被过滤了。这就是我不想用这种彻底去掉过滤的效果,而是增加自己想要通过的代码。

    当然,如果你的MU只是你自己用,就无所谓了。

    [Reply]

    蓝蓝小雪 于 August 30th, 2009 回复:

    不过这样评论还是会被过滤的,哈。

    我最讨厌有限制了,尤其是自己的东西。不过,你的MU不是你一个人用么?

    [Reply]

  5. 搞定Google Syntax for WordPress MU « Tank

    […] 可是还是没有解决问题,因为保存时还是会将name和class两个属性都去掉。经搜索发现,WordPress MU的确对HTML标签做了过滤操作,具体见“变态的WordPress MU的html过滤”。由于不会PHP,也不想改那么多不懂的地方,于是继续搜索更加可行的解决方案。“怎样在WordPress MU中使用Javascript标签”这篇文章的方法比较简单方便,于是尝试着做了下面的改动: […]

  6. Fai

    一直找这个问题的解决方法 不了了之..
    哎.
    什么时候blog@35 升级为对js flash 对象设置为不过滤阿.. 没有js 和 flash 插件又少. 天阿 免费第一次让我觉得恐怖

    http://faitong.blog.35.cn/ 欢迎回访!!!留言支持!!!

    [Reply]

  7. cat movies

    Howdy! Someone in my Facebook group shared this website with us so I came to look it over. I’m definitely enjoying the information. I’m bookmarking and will be tweeting this to my followers! Great blog and superb style and design.

    [Reply]

  8. Tam Bramucci

    Aw, this became a very nice post. With notion I would like to make a note of similar to this in addition ?§C slacking plus correct effort and hard work in making a very good article?- but so what can I actually say?- My partner and i put things many and positively possibly not find a way to get something finished.

    [Reply]

  9. Alston

    I’d like to thank you for the endeavours you get in writing this posting. This has been an inspiration in my opinion. I have transferred this on to a friend of mine. thankyou

    [Reply]

Leave a Reply

Your email address will not be published. Required fields are marked *