WP-Syntaxに乗り換えた理由
自分の場合、記事を書く時は、ローカルでこのサイトと同じCSSをあてたテンプレートを用意し、書いたら投稿画面にコピペ、微調整して公開、という感じで進めています。
iG:Syntax Hiliterの場合、ショートコードを使うので、ローカルでは実際の表示を確認出来ず、実際に投稿画面に貼ってプレビューしないとイメージがつかめないので、めんどくさいなぁと思ってました。
WP-Syntaxはpreタグを使うので、実際の表示とは異なるものの、ローカルでもソースの表示は可能なのでイメージがつかみやすい。
ただ、WP-Syntaxは、ソースのハイライト系によく備わっているプレーンテキストを表示する機能がなかったので、以前に検討した時にiG:Syntax Hiliterを採用しました。
ところが、WP-Syntaxでもプレーンテキストを表示 & コピペ出来るという記事を発見!WP-Syntaxを採用する大きな要因となりました。さて、その方法と、ビジュアルエディタとHTMLエディタとの行き来で起こる問題の対処法も合わせて紹介します。
WP-Syntaxのダウンロードとインストール
ダウンロード先
インストール
他のプラグインと同様にファイルを展開後、サーバーのpluginsディレクトリにアップロード、管理画面で有効にします。
プレーン・テキストを表示する方法
この記事を見つけたおかげで、WP-Syntaxを使うメリットがグンッとあがりました。
要jQuery。上記のページにあるソースを設置すれば、ソースコードの記述されている領域をクリックすると、プレーンテキスト表示&全選択された状態になります。下記のソースコードの表示領域をクリックしてみてください。
<h5>ここはどこですか?</h5>
<p>チキュウデス</p>
ビジュアルエディタとHTMLエディタとの行き来で起こる問題を解消する方法
WP-Syntaxでもプレーンテキストを表示出来るようになって、非常に便利になったのですが、一つ問題が。ビジュアルエディタとHTMLエディタを行き来すると、langはもともとpreに存在する属性なので消えませんが、WP-Syntaxで使用する特有の属性、line(行番号)、escaped(エンティティのtrue/false)はwordpressの自動整形により消えてしまうのです。
これを防ぐために、wp-syntax.phpの一部を書き換えます。167〜174行あたりの下記のソースを探します。
function wp_syntax_before_filter($content){
return preg_replace_callback(
"/\s*<pre(?:lang=[\"']([\w-]+)[\"']|line=[\"'](¥d*)[\"']|escaped=[\"'](true|false)?[\"']|highlight=[\"']((?:\d+[,-])*\d+)[\"']|\s)+>(.*)>\/pre>\s*/siU",
"wp_syntax_substitute",
$content
);
}
その170行目あたりの、line、escapedになっている部分をそれぞれid、classに書き換えます。
"/\s*<pre(?:lang=[\"']([\w-]+)[\"']|id=[\"'](\d*)[\"']|class=[\"'](true|false)?[\"']|highlight=[\"']((?:\d+[,-])*\d+)[\"']|\s)+>(.*)<\/pre>\s*/siU",
これで自動整形で消えてしまうのを防ぐことができます。
ただし、アップデートされた時は、手動で書き換えたデータを上書きされてしまう可能性もあるので気をつけてください。
紹介したリンク先は、ソースコードのハイライト表示に関するプラグインもまとめているので、他のプラグインも試してみてください。