ブログのSyntaxHighlighterとWordPressのアップデートをさぼってたので、やってみたらつまずいたさ。
SyntaxHighlighter( ? → 2.0 )
WordPress( 2.7 → 2.7.1 )
まずは、SyntaxHighlighterのアップデートから。
ActionScript 3.0のシンタックスを入れてあるので、念のため「shBrushAS3.js」と「syntaxhighlighter.php」をバックアップしといて、プラグインの自動アップデート。
結果、SyntaxHighlighterが2.0となって、プラグインの名前が「SyntaxHighlighter Evolved」に変わった?
Viper007Bond.com » My WordPress Plugins » SyntaxHighlighter Evolved
http://www.viper007bond.com/wordpress-plugins/syntaxhighlighter/
で、syntaxhighlighter.phpにActionScriptの設定を書き加えようとしたら、中身が全然変わってる。
他の言語を参考にAS用の設定を書き加えてみたけど、なんか[code language="actionscript"]〜[/code]としてるところで、actionscriptって定義がないよってJavaScriptのアラートがでるようになってしまった。
原因は古いままのAS用のシンタックス定義「shBrushAS3.js」では駄目。で、SyntaxHighlighter 2.0用にアップデートされた「shBrushAS3.js」をダウンロードして入れ直し。
AS3 Syntax Highlighting (with SyntaxHighlighter 2.0)
http://yourpalmark.com/2009/02/17/as3-syntax-highlighting-with-syntaxhighlighter-20/
ということで、syntaxhighlighter.phpはこんな感じ。
syntaxhighlighter.phpの60行目あたりに付け足し。「shBrushAS3.js」の適用。
wp_register_script( 'syntaxhighlighter-brush-xml', plugins_url('/syntaxhighlighter/syntaxhighlighter/scripts/shBrushXml.js'), array('syntaxhighlighter-core'), $this->agshver );
↓
wp_register_script( 'syntaxhighlighter-brush-xml', plugins_url('/syntaxhighlighter/syntaxhighlighter/scripts/shBrushXml.js'), array('syntaxhighlighter-core'), $this->agshver );
wp_register_script( 'syntaxhighlighter-brush-as3', plugins_url('/syntaxhighlighter/syntaxhighlighter/scripts/shBrushAS3.js'), array('syntaxhighlighter-core'), $this->agshver );
syntaxhighlighter.phpの120行目あたりに付け足し。[code language="actionscript"]なところ。
'html' => 'xml', 'xhtml' => 'xml',
↓
'html' => 'xml', 'xhtml' => 'xml', 'actionscript' => 'as3', 'as' => 'as3',
これでAS用を適用した部分はちゃんと表示されるようになったんだけど、[code language="actionscript"]を使ってる過去記事の編集画面で「htmlspecialchars_decode()なんたらかんたら」の警告がでて、まったくテキストの編集が全くできなくなってしまった。
じゃあ、WordPressをアップデートしたら直るんかなと2.7.1にしてみた。
そしたら、「htmlspecialchars_decode()なんたらかんたら」の警告は相変わらずでるけど、テキスト編集部分は表示されるようになって、まぁ良いかと思ったけど、調べてみたらmodoki.orgさんとこで解決法を発見。
[WordPress]htmlspecialchars_decode()エラーで投稿できない | modoki.org
http://modoki.org/blog/archives/42
WordPressのバグらしく「wp-includes/compat.php」の104行目を
if ( !is_scalar( $string ) ) {
↓
if ( !is_scalar( $str ) ) {
に書き直せってさ。
そしたら、「htmlspecialchars_decode()なんたらかんたら」でなくなったー!。
万事解決。すっきり満足。