WordPressのエディタを本気で変更する

WordPressデフォルトのTinyMCEはどうも使いづらい。なので、比較的スマートに使えるFCKeditorをベースに変更することにした。
単純にプラグインをインストールするだけではなく、しっかり使えるようにする。
ここで使用しているWordPressは、WordPressME2.2.3。
まず、FCKeditorのWordPressプラグインをダウンロードしてくる。今回はv2.2を使用した。
http://www.deanlee.cn/wordpress/fckeditor-for-wordpress-plugin/
ひとまずwp-content/pluginsディレクトリに展開し、適用してみる。ファイルパーミッションに注意。
http://tokibito.orz.hm/static/img/wp-fckeditor01.png
問題はなさそうに見えるが、入力を行ってみるとEnterキーでpタグになることや利用しないツールボタンなどが気になる。また、通常の画像アップロードフォームからの挿入ができなかったりする。
まずは、使わないツールボタンを消す。
FCKEditorのプラグインディレクトリにある、custom_config_js.phpにツールボタンの設定があるので編集する。下記はデフォルト。

FCKConfig.ToolbarSets["Default"] = [
	['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
	['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
	['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
	['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
	'/',
	['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
	['OrderedList','UnorderedList','-','Outdent','Indent'],
	['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
	['Link','Unlink','Anchor'],
	['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak','-','wpmore'],
	'/',
	['Style','FontFormat','FontName','FontSize'],
	['TextColor','BGColor'],
	['FitWindow','-','About']
] ;

custom_config_js.phpのファイル以外は書き換えたくないので、FCKConfig.ToolbarSets["Default"]を変更して使うことにする。
Enterキーを押すとbrタグを挿入するようにするため、行末に、

FCKConfig.EnterMode = 'br';

と追記しておく。
これでツールボタンもすっきりして、改行でも困らない。
と思いきや、エディタでbrをたくさん書いていても、WordPressがbrを消去してpタグに置き換えてしまう。どうやらWordPress2.2以上でこうなるらしい。原因はwpautopという関数のようだ。
これを解決するために、Disable wpautopというプラグインを導入した。*1
http://tokibito.orz.hm/static/img/wp-fckeditor02.png
これである程度、エディタは操作しやすくなっただろうか。
続いて、画像挿入部分にとりかかる。
画像挿入部分ではjavascriptエラーが出るが、これはwp-admin/upload.jsがTinyMCE用に作られているのが原因になっている。
249〜254行目あたりを変更する。

/*
			tinyMCE = win.tinyMCE;
			if ( typeof tinyMCE != 'undefined' && tinyMCE.getInstanceById('content') ) {
				tinyMCE.selectedInstance.getWin().focus();
				tinyMCE.execCommand('mceInsertContent', false, h);
			} else
				win.edInsertContent(win.edCanvas, h);
*/
			oEditor = win.FCKeditorAPI.GetInstance('content');
			oEditor.InsertHtml(h);

これで画像を挿入できるようになった。
完成。
http://tokibito.orz.hm/static/img/wp-fckeditor03.png

*1:このプラグインを入れると、既存の記事の整形が崩れる可能性があります。