Upgrade TinyMCE for WordPress
WP 中内置了 TinyMCE 作为它的 rich editor ,这很好, 恰巧 TinyMCE 也是我最喜欢的 editor ,而且 WP 团队还很认真地开发了一个 plugin for TinyMCE ,算得上严谨负责,可惜的是,他们依然过于小心了。大约是为了防止用户在编辑中使用一些特殊字符, WP 在初始化 TinyMCE 时作了很多过滤和严格的限制。这导致了无法在 WP 的内置 TinyMCE 中直接写 xml/html 代码。还有一个问题就是, WP 的内置 TinyMCE 版本太老,居然是2005年12月发布的 2.0 RC 版。
基于以上理由,我决定抛弃 WP 内置的 TinyMCE ,使用最新的 TinyMCE 2.0.9 来作为俺的 editor.
1 Disable WP built-in TinyMCE
登录 WP 控制台,然后进入 Options -> Writing ,在 Formatting 中清除对 "Users should use the visual rich editor by default" 项的选择。
进入 Users ,在 Personal Options 中清除对 "Use the visual rich editor when writing" 项的选择。
2 Download the latest TinyMCE
到其官方站下载最新版,我此时的是 2.0.9。
3 Install TinyMCE
解开下载包
$ unzip tinymce_2_0_9.zip
$ unzip tinymce_lpackage.zip (如果你也下载了语言包的话)
把 jscripts 目录下的 tiny_mce 复制到 $WP_HOME/wp-includes/js/ 下。其实可以复制到任意能通过 browser 访问的地方,但是为了看起来比较一致,我将它复制到了 WP 用来放 javascript 的地方。
$ cd tinymce/jscripts
$ cp -fr tiny_mce $WP_HOME/wp-includes/js/
改个名字,好区分这是我自己安装的
$ cd $WP_HOME/wp-includes/js/
$ mv tiny_mce tinymce209hys
4 Confiure TinyMCE
在 $WP_HOME/wp-includes/js/ 下新建一个文件 init_tinymce209hys.js ,同样,这个脚本文件可以放到任意能通过 browser 访问的地方,文件名也随便。
该文件是用来配置新安装的 TinyMCE 的,至于如何配置 TinyMCE ,可以访问其官方 WIKI 来获取帮助。以下是我的配置:
| tinyMCE.init({ mode : "exact", elements : "content", theme : "advanced", language : "zh_cn_utf8", width : "100%", height : "400", plugins : "paste,table", theme_advanced_buttons1 : "cut, copy, paste, pastetext, separator, fontselect, fontsizeselect, separator, bold, italic, underline, strikethrough, separator, bullist, numlist, separator, justifyleft, justifycenter, justifyright, separator, forecolor, backcolor, separator, link, unlink, separator, table, row_props, cell_props, separator, charmap, image, removeformat, code", theme_advanced_buttons2 : "", theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", theme_advanced_statusbar_location : "none", theme_advanced_path : false, relative_urls : false, remove_script_host : false }); |
5 Modify $WP_HOME/wp-admin/admin-header.php
将第49行
<?php if ( $editing && user_can_richedit() ) { ?>
修改为
<?php if ( $editing ) { ?>
即,去除对用户是否使用 rich editor 的判断。
将第50行
<script type="text/javascript" src="../wp-includes/js/tinymce/tiny_mce_gzip.php?ver=20051211"></script>
修改为
<script type="text/javascript" src="../wp-includes/js/tinymce209hys/tiny_mce.js"></script>
<script type="text/javascript" src="../wp-includes/js/init_tinymce209hys.js"></script>
完工!
附注:我的 WP 是 2.0.5 版。