WordPressのビジュアルエディタが表示されなかった件解決

とある方のお手伝いで
WordPress をサーバにインストールしたのだが、
投稿するときに使うビジュアルエディタが動かない。
ビジュアルエディタというのはビジュアルなエディタで、
文字のサイズや色、貼り付ける画像などを
実際に表示されるのと同じように画面で確認しながら
記事を編集できるもの。
HTML が苦手な人にとっては心強いエディタだ。
ところがそのサーバに WordPress を入れたところ
ビジュアルエディタが動かなくなった。
動かなくなったというか、表示すらされない。
ローカルでは問題なく動いていたので、
サーバの設定によるものなのは確かだが
何が邪魔をしているのかがわからなかった。
でどこをどうたどったのかは覚えていないが
WordPress オフィシャルサイトのサポート掲示板に解決方法を発見。

WordPress › Support » realTinyMCE is not defined

So I had a similar problem, but it was definitely an issue with the server not supporting gzip properly.

gzip をサポートしていないサーバで使うとこうなる模様。
そしてこれの原因となっているのがこのファイルだった。
/wp-includes/js/tinymce/tiny_mce_gzip.php
これの87行目あたり(手元の WordPress ME2.2.3 の場合)に
こんなコードがあって、

if ((in_array(‘gzip’, $encodings) || in_array(‘x-gzip’, $encodings) || isset($_SERVER[‘—————‘])) && function_exists(‘ob_gzhandler’) && !ini_get(‘zlib.output_compression’) && ini_get(‘output_handler’) != ‘ob_gzhandler’) {
    $enc = in_array(‘x-gzip’, $encodings) ? “x-gzip” : “gzip”;
    $supportsGzip = true;
}

$supportsGzip = true;
のところで gzip フラグがオンになっている。
これを gzip 非サポートのサーバで動かすと問題が起きるようなので、
強制的にオフにしてみた。
上記コードの true を false に書き換えてもいいが、
一応復元しやすいように上記コードの直後に
$supportsGzip = false;
を挿入。
さっそく投稿画面をリロードしたら
ちゃんとビジュアルエディタが起動。
問題なく動いた。
動いてくれて本当によかった。
最悪の場合「HTML を覚えればいいよ」ということになったかもしれないが、
そうしたら「じゃあ教えてね」となるに決まっている。
動いてくれて本当によかった。

  • このエントリーをはてなブックマークに追加