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 &lt; &gt;

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

, , , ,