WordPressのSyntaxHighlighterを使うと無茶苦茶になるよ

WordPressのSyntaxHighlighterに関連するエントリを2つ書いてきましたが、前回、開始行番号を指定するためにコードを色々いじっていて気がついたことがあるので書きます。

以前のエントリ

SyntaxHighlighterを使うということで、プログラムコードを掲載しているわけなんですけど、プログラム中に、 < とか > とか & って文字を使いたくなりません?
なりますよね。

で、投稿欄に記事を書いてコードを書いて【公開】して、一般ページ側でとりあえず記事を読み直します。

あっ、このコードのここの部分書き直したいな。
って思うことありません?
ありますよね。

そこで問題が発生します。

ブログの管理画面から、さっき書いた記事を開いて再編集します。
ちなみに私は、【ビジュアル】でなく【HTML】を使ってます。

すると、 & と書いてたはずなのに、&amp; って勝手に変わっちゃってませんか?
私のところではそうなっちゃいます。

これはこれで別に構わないんですけど、構わないのは本文中だけなんすよ。
シンタックスハイライトのために、[code=’php’] [/code]って書いた内側の & まで変換されちゃったら困ります。

でも、SyntaxHighlighter を使わないWordPress自身には、&を変換する機能はもともと用意されていないんですよ。 & と書けば& とそのまま表示されちゃいます。
<div> hogehoge</div> ってちょこっとサンプルを書きたければ、&lt;div> hogehoge&lt;/div> とわざわざ書いてやらないと、HTMLタグが効いちゃって意図しない表示になります。それがWordPress本来の動作です。

それが、SyntaxHighlighter を適用すると、 & が &amp; に、&lt; が < のように変わっちゃいます。
しかも、プログラム中までご丁寧に変わっちゃいます。

どういうことかというと、
新規投稿時に、 <div> hogehoge</div> って書いて保存して、
再編集を開くと、 &lt;div> hogehoge&lt;/div> になり、気づかずに保存して
再度、再編集を開くと、&amp;lt;div> hogehoge&amp;lt;/div>
って、& が &amp; に、保存して再編集するたびに延々増えていきます。

で、こんなん使い物になるかーーー!!って。

まぁ 最初は、なんかおかしいなぁ程度だったんですけどね。
でも、毎回毎回、そんなだしうっとうしくなってきて。

で、先日、開始行番号の件で、ファイルをいじってたら偶然ですが、原因を突き止めたわけです。

ということで、以下、修正箇所です

次のファイルを編集します。
/wp-content/plugins/syntaxhighlighter/syntaxhighlighter.php

‘]// Loop through each match and encode the code
// foreach ( (array) $matches as $match ) {
// $code = htmlspecialchars( $match[$this->match_code] );
// $code = str_replace( ‘&’, ‘&amp;’, $code );
// $code = str_replace( ‘&lt;’, ‘&amp;lt;’, $code );
// $code = str_replace( ‘&gt;’, ‘&amp;gt;’, $code );

// $content = str_replace( $match[$this->match_code], $code, $content );
// }

※ 行番号は、WordPressのSyntaxHighlighterで開始行番号を指定する を適用したあとのものです。
何も変更をしていなかった場合は、該当の箇所を見つけてください。

で、上のように、コメントアウトします。
まぁ見ての通りですが、ここで、& を &amp; に変換しちゃってたんですよね。

これで安心して、一度確定させたページを何度でも修正できるようになります。

つぶやくつぶやく

No related posts.

関連記事はYARPP関連記事プラグインによって表示されています。

Yahoo!ブックマーク Googleブックマーク はてなブックマーク livedoorClip del.icio.us newsing FC2 Technorati ニフティクリップ iza Choix Flog Buzzurl 

No user responded in this post

Subscribe to this post comment rss or trackback url
Leave A Reply

 Username (Required)

 Email Address (Remains Private)

 Website (Optional)

Yahoo!ブックマーク Googleブックマーク はてなブックマーク livedoorClip del.icio.us newsing FC2 Technorati ニフティクリップ iza Choix Flog Buzzurl 

(株)オルタ

香川県高松市。

ホームページ制作
・ショッピングサイト制作
・コミュニティサイト制作
・システム開発
・各種業務アプリケーション
・仕様作成、設計、開発、運用、保守...

カレンダー

2008年8月
    9月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

検索

カスタム検索

自己紹介

aulta (オルタ)
香川県高松市在住。
1979年2月生の男。
- - - - - - - - - - - -
PHP, Perl, JAVA, Tomcat, MySql, Oracle, Sql Server, Linux, html, xml, css, javascript, VB, VC, etc...
- - - - - - - - - - - -
香川でプログラムやweb関係の方と仲良くなりたいと思ってます。あっでも地域も趣味も幅広く色んな人と仲良くなりたいので、私に興味を持たれた方はお気軽に【ご連絡】ください。