[contact-form-7 id="1781" title="ご意見・ご要望・お問い合せ"]

Technical note

WP-Syntaxを便利に使うTips

2011.09.10

記事内で紹介するソースコードのハイライト表示を、今まではiG:Syntax Hiliterを利用していました。しかし思う所があり、以前に検討していたWP-Syntaxに変えてみました。なぜ変えたのか、理由に加えて、WP-Syntaxをさらに便利に使えるTipsも紹介します。

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。上記のページにあるソースを設置すれば、ソースコードの記述されている領域をクリックすると、プレーンテキスト表示&全選択された状態になります。下記のソースコードの表示領域をクリックしてみてください。

HTML
<h5>ここはどこですか?</h5>
<p>チキュウデス</p>

ビジュアルエディタとHTMLエディタとの行き来で起こる問題を解消する方法

WP-Syntaxでもプレーンテキストを表示出来るようになって、非常に便利になったのですが、一つ問題が。ビジュアルエディタとHTMLエディタを行き来すると、langはもともとpreに存在する属性なので消えませんが、WP-Syntaxで使用する特有の属性、line(行番号)、escaped(エンティティのtrue/false)はwordpressの自動整形により消えてしまうのです。
これを防ぐために、wp-syntax.phpの一部を書き換えます。167〜174行あたりの下記のソースを探します。

php
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に書き換えます。

php
"/\s*<pre(?:lang=[\"']([\w-]+)[\"']|id=[\"'](\d*)[\"']|class=[\"'](true|false)?[\"']|highlight=[\"']((?:\d+[,-])*\d+)[\"']|\s)+>(.*)<\/pre>\s*/siU",

これで自動整形で消えてしまうのを防ぐことができます。
ただし、アップデートされた時は、手動で書き換えたデータを上書きされてしまう可能性もあるので気をつけてください。
紹介したリンク先は、ソースコードのハイライト表示に関するプラグインもまとめているので、他のプラグインも試してみてください。

© WebScripter.jp
All rights reserved.