Tento web je založený na CMS WordPress. Na písanie blogov používam vstavaný editor Gutenberg. Ak do blogu potrebujem vložiť nejaký zdrojový kód a chcem aby bola jeho syntax zvýraznená, použijem obľúbený plugin SyntaxHighlighter. Pred nedávnom som zistil, že ak je v zdrojovom kóde aj znak ampersand (tento znak „&„), tak v syntaxy sa zobrazí v tejto podobe (samozrejme bez medzery).
& amp;
Iste, že takýto kód je potom s chybou a keďže kód (resp. konfigurák) sa z webu len kopíruje a následne sa niekde vkladá, tak aplikácia, alebo parser by určite ohlásil chybnú syntax. Začal som teda hľadať riešenie a našiel som ako sa to dá jednoducho opraviť. Vo WordPress administrácii prejdeme do
Pluginy --> Editor Pluginov
Vyberte plugin, ktorý chcete upraviť
SyntaxHighlighter Evolved
a v skripte
SyntaxHighlighter.php
pridáme na koniec tento filter
/**
* Filter to fix issue with & in SyntaxHighlighter Evolved plugin.
*
* @param string $code Code to format.
* @param array $atts Attributes.
* @param string $tag Tag.
*
* @return string
*/
function kagg_syntaxhighlighter_precode( $code, $atts, $tag ) {
if ( 'code' === $tag ) {
$code = wp_specialchars_decode( $code );
}
return $code;
}
add_filter( 'syntaxhighlighter_precode', 'kagg_syntaxhighlighter_precode', 10, 3 );
Klikneme na Aktualizovať súbor a máme hotovo. & sa už zobrazuje tak ako má.