WP-Syntax è il plugin che utilizzo per evidenziare i codici che inserisco nei miei post. Da subito ho notato un problema che deriva dall’editor integrato di WordPress. Infatti al momento dell’inserimento del codice all’interno dei tag <pre></pre> tra il passaggio da modalità “Visuale” o “HTML” i caratteri speciali vengono convertiti in entità HTML, come per esempio i carattetri <> vengono tradotti in < >
Cercando velocemente su Internet ho subito trovato una soluzione immediata, ovvero un workaround che utilizza la funzione htmlspecialchars_decode di PHP.
Modificando una riga del file wp-syntax.php si risolve il problema.
//$geshi = new GeSHi($code, $language); $geshi = new GeSHi(htmlspecialchars_decode($code), $language); |
Nota: la funzione htmlspecialchars_decode è disponibile solo per le versioni di PHP superiori o uguali alla 5.1.0. Per le versioni precedenti è possibile simularla in questo modo:
if (!function_exists("htmlspecialchars_decode")) { function htmlspecialchars_decode($string, $quote_style = ENT_COMPAT) { return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style))); } } |
Fonte: http://blog.felho.hu/escaping-problem-with-wp-syntax-wordpress-plugin.html