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 版。