Evitare il texturize di WordPress

Nel cantiere continuamente aperto, che è questo blog, ho trasferito tutti gli shortcode che andavo copiando di tema in tema in un plugin apposito, UBN Shortcodes, in modo da averli sempre disponibili anche su temi che intendo solo provare. Si tratta di funzioni che mi aiutano parecchio nella stesura degli articoli; unito poi all’uso di AddQuicktag 1 la cosa diventa straordinaria.

Mentre facevo questa operazione, ho aggiunto uno shortcode dedicato all’elemento pre e mi sono accorto che WordPress cambiava le virgolette diritte " in quelle tipografiche “. Mi chiedevo come mai, visto che se usavo direttamente quell’elemento il cambio non veniva operato. Era chiaro che bisognava dare uno sguardo al file /wp-includes/formatting.php e, di preciso, alla funzione wptexturize($text), una vecchia conoscenza per chi ha a che fare con la creazione di temi e plugin. Questa funzione, che appunto trasforma alcuni caratteri in altri, non viene eseguita su quei caratteri che si trovano all’interno di alcuni elementi HTML prestabiliti, e cioè:

$default_no_texturize_tags = array('pre', 'code', 'kbd', 'style', 'script', 'tt');

Come vedete, troviamo anche il nostro pre. Alla riga successiva, troviamo un altro array, ma stavolta dedicato agli shortcode da non “texturizzare”. L’array, però, contiene solo code:

$default_no_texturize_shortcodes = array('code');

Per questo motivo il mio shortcode [pre] subiva gli effetti "nefasti" di wptexturize.

Per includere in un tema o in un plugin anche altri shortcode all'array, è sufficiente aggiungere un filtro. Infatti, se nel file formatting.php guardiamo un po' oltre, vediamo questa riga:

$no_texturize_shortcodes = '(' . implode('|', apply_filters('no_texturize_shortcodes', $default_no_texturize_shortcodes) ) . ')';

dove la presenza di apply_filters ci consente di ampliare gli shortcode che non subiscono alcuna modifica al loro contenuto. Più tecnicamente, dobbiamo creare un array di elementi HTML da assegnare a no_texturize_shortcodes che verranno quindi aggiunti all'array principale $default_no_texturize_shortcodes.

Basta così creare una funzione apposita nel proprio tema o plugin che può suonare più o meno così:

add_filter('no_texturize_shortcodes',  'ubn_no_texturize_shortcodes');

function ubn_no_texturize_shortcodes( $shortcodes_array ) {
	$shortcodes_array = array( 'pre', 'tt' );

	return $shortcodes_array;
}

Ho inserito sia pre che tt, cioè due shortcode che uso io: potete sostituirli con quelli che volete o aggiungerne d altri. Questa semplice funzione vi garantisce che il testo inserito all'interno rimarrà intatto. Con questa tecnica si può allargare, ovviamente, pure l'array dedicato ai "tags", anche se comunque non vedo necessità di farlo.

Note

  1. Scrissi qualcosa su AddQuicktag in questo post.

Acrobat.com e Google Maps: shortcode per WordPress

Dopo la serie su YouTube ecco altri due shortcode da usare in WordPress. Ricordo che gli shortcode in WordPress, nel caso degli esempi di questo articolo e detto in maniera semplice, consentono di incorporare codice web di servizi come Google e Acrobat. Se, ad esempio volete pubblicare una mappa di Google Maps, Google vi fornisce un pezzo di codice da incollare nella pagina web, qualcosa del tipo:

<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.it/maps?hl=it&amp;ie=UTF8&amp;ll=37.540222,13.95813&amp;spn=4.555009,9.788818&amp;z=7&amp;output=embed"></iframe><br /><small><a href="http://maps.google.it/maps?hl=it&amp;ie=UTF8&amp;ll=37.540222,13.95813&amp;spn=4.555009,9.788818&amp;z=7&amp;source=embed" style="color:#0000FF;text-align:left">Visualizzazione ingrandita della mappa</a></small>

Se volete modificare le dimensioni della mappa restituita, dovete modificare i due parametri width e height.

Tutto questo, però, può essere semplificato con uno shortcode, più semplice da utilizzare e gestire. Vediamo come farlo per Google Maps e Acrobat.com.
Continua a leggere

WordPress e Youtube: funzioni e shortcode

Sulla scia del post precedente, completo quanto già scritto con alcune indicazioni che magari possono tornare utili. L’argomento riguarda sempre WordPress e YouTube e come pubblicare un video evitando i problemi evidenziati prima. Alla funzione dell’articolo precedente qui aggiungo una carrellata di altre funzioni o, per essere più precisi, la medesima con alcune differenze: a seconda dei casi, può tornare utile l’una o l’altra.

Queste funzioni vanno inserite nel file functions.php del proprio tema: si scelga quella che più è congeniale con ciò che si deve fare o, se si vuole, possono essere usate tutte contemporaneamente.

Continua a leggere