ビジュアルエディター(TinyMCE)が勝手に を に置き換えてしまう問題の解決法

WordPress のビジュアルエディターの便利な機能として、改行を p タグに置き換えてくれるというものがあります(wpautop 機能というそうです)。ところが、div 要素を使いたい場合にはこの機能が邪魔になる場合があります。

特にページなんかにはよく div 要素を使ったりします。そんなとき、TinyMCE が div を p に置き換えてしまうためレイアウトが崩れて困ります。
そういう場合の対処法を書きます。

WordPress 2.5.x までで有効な方法

WordPress 2.5.x までは以下の方法が使えました。

wp-includes/js/tinymce/tiny_mce_config.php の 26行目を書き換えます。

Edit this file:

wp-includes/js/tinymce/tiny_mce_config.php

Line 26 reads as follows:

$valid_elements =
‘p/-div[*],-strong/-b[*],-em/-i[*],-font[*],-ul[*],-ol[*],-li[*],*[*]’;

Remove the first portion, like so:
$valid_elements =
‘-strong/-b[*],-em/-i[*],-font[*],-ul[*],-ol[*],-li[*],*[*]’;

WordPress 2.6 で有効な方法はないのか?

下のプラグインを使ってビジュアルエディターの wpautop 機能を停止するというのがひとつの方法ですが、これまでに書いてきた記事の見た目が変わってしまう危険性があります。

Disable WPAUTOP

というわけで、こちらのプラグインを参考に、カスタムフィールドの値によって wpautop をオフにするようなプラグインを書けばいいんじゃないかと思います。

Deactivate Visual Editor
カスタムフィールドに deactivate_visual_editor というキーをつくって、値を true にすると、その記事(またはページ)については Visual Editor が無効になるというものです。