WordPress: sostituire gli shortcode

WordPress: sostituire gli shortcode

Se usate un evidenziatore di sintassi nel vostro tema di WordPress potreste voler cambiare quello attuale con uno nuovo. Per esempio io uso SyntaxHighlighter e se volessi cambiarlo con Google Prettify mi troverei di fronte al problema degli shortcode. Infatti se disabilitate un plugin o un tema che usano gli shortcode, questi rimarranno comunque nel contenuto delle vostre pagine sotto forma di stringa non processata da Wordpress, ossia come [shortcode]. Possiamo creare un filtro su the_content per risolvere il problema. Vediamo come.

Il seguente codice PHP ha un puro scopo dimostrativo. In altri casi invece della funzione str_replace() (ridondante e verbosa) vi consiglio di usare le espressioni regolari. Comunque in questo caso a noi interessa avere il controllo completo su ogni singolo shortcode, quindi la macchinosità è in un certo senso giustificata (it works but it's clunky):


function replace_sh_shortcodes($content) {

	$content = str_replace('&#91;css&#93;', '<pre class="prettyprint lang-css">', $content);
	$content = str_replace('&#91;/css&#93;', '</pre>', $content);
	$content = str_replace('&#91;php&#93;', '<pre class="prettyprint">', $content);
	$content = str_replace('&#91;/php&#93;', '</pre>', $content);
	$content = str_replace('&#91;js&#93;', '<pre class="prettyprint lang-js">', $content);
	$content = str_replace('&#91;/js&#93;', '</pre>', $content);
	$content = str_replace('&#91;xml&#93;', '<pre class="prettyprint">', $content);
	$content = str_replace('&#91;/xml&#93;', '</pre>', $content);
	$content = str_replace('&#91;sql&#93;', '<pre class="prettyprint lang-sql">', $content);
	$content = str_replace('&#91;/sql&#93;', '</pre>', $content);
	$content = str_replace('&#91;text&#93;', '<pre class="prettyprint">', $content);
	$content = str_replace('&#91;/text&#93;', '</pre>', $content);
	
	return $content;
}

add_filter('the_content', 'replace_sh_shortcodes');

Questo tipo di shortcode è molto semplice perchè privo di attributi. Le espressioni regolari vanno invece utilizzate per gestire shortcode più complessi con attributi.

In questo caso troverete molto utile questa discussione su Stack Overflow. Potete in questo caso usare l'espressione regolare di WordPress come base di partenza e modificarla secondo le vostre esigenze.

Torna su