トイレのうず

投稿画面でWP SyntaxHighlighterが動かないバグを修正

当記事はアフィリエイト広告を掲載しています。

WordPress にてコードを整形するのに WP SyntaxHighlighter というプラグインを使用しているですが、 WordPress を 4.0 にバージョンアップした頃から、コードを入力する「 SH pre 」のボタンを押しても無反応で入力のダイアログが現れなくなりました。入力機能がないと地味に不便です。

作者さんのページは以下。 2 年以上前からメンテナンスされていないようです。
→モノについてのモノ語り: WP SyntaxHighlighter

バグの調査

以前入力したコードをコピーしてくれば、他の部分はちゃんと動くので、管理画面がバージョンアップで動かなくなったと推測されます。「 SH pre 」をクリックするとバグチェックのプラグインにて JavaScript のエラーが出ていました。

「 TypeError: jQuery( … ).dialog is not a function wordpress 」

ローカルにインストールしていろいろいじってみたところ、どうやら jQuery UI の dialog が関数として定義されていないことがわかりました。

jQuery UI のダイアログは本体とスタイルシートも読み込まないといけないので、その辺りを修正しました。

具体的な修正方法

具体的な修正は下記のようにしました。

1) WP SyntaxHighlighter の sh-pre-quicktag.php の末尾あたりの 182 行目と 183 行目をコメントアウトし、 2 行コードを追加。

function wp_sh_load_jqueryui() {
//	echo '<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
//<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>';
	echo ' <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css" />
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>';
}

2) WP SyntaxHighlighter の設定画面の「 3. HTML エディターの設定」にて「 jQuery と jQuery UI を読み込む」のチェックを入れる。

コードが膨大すぎてどこを修正していいのかわからないので、適当な部分に追加しました。この部分は過去の遺産で管理画面に jQuery と jQuery UI が読み込まれていなかった時代のものみたいです。もっと根本的な修正方法がありそうですが、動くのでこれでよしとします。

関連記事

 WordPress のメニューツリー表示 WP-dTree を外した
WordPress
thumbnail
Ultimate Plugins Smart Update Pinger は WordPress 2.9.1 で動かないらしい。→動きます。
WordPress
thumbnail
【 WorsPress 】 Twitter Tools で新規投稿を通知できない?
WordPressWebサービス
thumbnail
WordPress 投稿リビジョン停止のプラグイン【 Disable Revisions and Autosave plugins 】と【 Revision Control 】
WordPress
thumbnail
WordPress: Smart Update Pinger は予約投稿時には動作しないらしい
WordPress
thumbnail
Google Analytics Top Content Widget の人気記事アクセスランキングが更新されない
WordPress
人気記事ランキングが更新されない