Für die Darstellung von Code-Schnipseln, speziell das Syntax-Highlighting setzen wir das Plugin WP-Syntax ein. Probleme gab es bisher immer mit Code, der die speziellen HTML-Entities enthielt, also hauptsächlich die öffnenden und schließenden spitzen Klammern, die in der einen oder anderen Sprache irgendwie als Vergleichsoperatoren eingesetzt werden: < und >.
Bisher bin ich Problemen damit so aus dem Weg gegangen, dass ich entsprechende Zeichen im Beitragseditor durch < und > ersetzt hatte. Damit das Plugin damit umgehen konnte, war bei jedem Update eine kleine Änderung notwendig, für Version 0.9.1 sah der Patch beispielsweise so aus:
--- wp-syntax.php 2008-08-24 19:22:12.000000000 +0200 +++ wp-syntax.php 2008-08-25 15:26:48.000000000 +0200 @@ -97,7 +97,8 @@ $line = trim($match[2]); $code = wp_syntax_code_trim($match[3]); - $geshi = new GeSHi($code, $language); + $geshi = new GeSHi(htmlspecialchars_decode($code), $language); $geshi->enable_keyword_links(false); do_action_ref_array('wp_syntax_init_geshi', array(&$geshi));
Ab WP-Syntax 0.9.2 ist das nicht mehr notwendig. Die Release Notes sagen ganz lapidar:
**0.9.2** : Updated to use GeSHi v1.0.8.2; Added optional `escaped=”true”` support in case code snippets are already escaped with html entities.
In der Praxis sieht das dann so aus:
<pre lang="xml" escaped="true"> <xml>Hello</xml> </pre>
Das vereinfacht zukünftige Upgrades von dem Plugin, ist also eine feine Sache. Für vergangene Beiträge musste ich jetzt allerdings nochmal von Hand diesen Parameter setzen. Wenn mir da irgendwo was durch die Lappen gegangen sein sollte, einfach mal kurz anpiepsen, dann behebe ich das.
Nach dem Umzug des Blogs benutzen wir jetzt Crayon Syntax Highlighter.