WordPress – Gestire gli shortcode per creare codici personalizzati nel content degli articoli

Wordpress - Shortcode

Le funzioni per lo shortcode di WordPress ci permettono di inserire codice personalizzato all’interno del content di un articolo (1)

Se fate spesso uso di WordPress e dei suoi plugin, prima o poi vi siete senz’altro imbattuti in uno shortcode API.
Di cosa si tratta? Come spiega la documentazione, sono «un insieme di funzioni per creare un macro codice all’interno del contenuto di un post». Nella pratica, gli shortcode possono essere visti come alias da sostituire: quando nel testo di un articolo compare una determinata stringa, questa viene sostituita da un codice specifico.

Per esempio, nel content di un post potreste trovare uno shortcode come questo, che permette di aggiungere una photo gallery nella pagina:

1
[myshortcode-gallery id=1]

Un sistema comodo per aggiungere codice all’interno di un articolo: basta scrivere lo shortcode nel punto voluto del testo e, alla stampa del content, WordPress si occuperà di convertirlo.

Creare uno shortcode personalizzato

Esiste naturalmente la possibilità di creare uno shortcode personalizzato, che stampi un macro codice creato da noi.

WordPress ci mette a disposizione delle funzioni per la gestione degli shortcode. Andiamo a vederle sommariamente:

1
2
3
4
5
6
7
8
9
10
11
12
//registra un nuovo shortcode
//$tag è lo shortcode scritto da noi, $func è la funzione di conversione
function add_shortcode($tag, $func)

//rimuove un determinato shortcode ($tag)
function remove_shortcode($tag)

//rimuove tutti gli shortcode
function remove_all_shortcodes()

//esegue tutti gli shortcode che trova nel testo passato ($content)
function do_shortcode($content)

Prima di vedere un esempio concreto, consideriamo che l’uso degli shortcode ha anche qualche limitazione:
– gli shortcode devono essere univoci: se incontra due shortcode con lo stesso nome, il codice sovrascriverà il primo e terrà solo il secondo.
– gli shortcode non accettano l’uso di parentesi quadre nei suoi parametri (es: [tag attributo=”[valore]”] )
– uno shortcode può internare un altro shortcode; ma uno shortcode non può contenere se stesso (quindi non può iterare se stesso).

Un esempio

Riprendiamo l’esempio della documentazione, che è minimale e chiaro da capire, e vediamo come possiamo costruire uno shortcode personalizzato.
Quello che vogliamo realizzare è uno shortcode di questo tipo:


1
[myshortcode foo="bar" bar="bing"]

Quando richiamato nel content, sarà convertito in un array associativo, le cui chiavi e valori saranno passati come parametri alla funzione che andremo a costruire:

1
array( 'foo' => 'bar', 'bar' => 'bing' )

Diamo un’occhiata adesso alla funzione da creare:

1
2
3
4
5
6
7
8
9
10
//funzione shortcode personalizzata
function bartag_func( $atts ) {
	extract( shortcode_atts( array(
		'foo' => 'something',
		'bar' => 'something else',
	), $atts ) );

	return "foo = {$foo}";
}
add_shortcode( 'myshortcode', 'bartag_func' );

Il codice non è complicato. Non fa altro che prendere come parametri i valori degli array (foo=”bar” e bar=”bing”) e li elabora. Notare che questi attributi sono opzionali: se non vengono passati, i valori degli attributi saranno foo=”something” e bar=”something else”.
In questo caso la funzione non fa altro che ritornare « foo={valore passato all’attributo ‘foo’} », ma possiamo personalizzarlo a piacere.

Infine, con add_shortcode() lo facciamo registrare tra gli shortcode, in modo che WordPress sappia di doverlo interpretare.

Se dobbiamo estrapolare gli shortcode dal resto del content

Gli shortcode saranno inseriti all’interno dell’articolo e pertanto stampati a video insieme al content.
Spesso, però, gli shortcode sono creati da plugin e personalizzarli risulta ostico.

Nel mio caso, ho dovuto far ricorso a una slide creata da plugin: il cliente aveva necessità di personalizzare il foglio di stile, separando la slide dal resto del content. Come fare in questi casi?

La cosa più rapida è estrarre lo shortcode e separarlo dal content, in modo da poterlo gestire autonomamente con i css. Nel mio caso era semplice: al cliente dicevo di inserire lo shortcode prima di tutto il testo, in modo da agevolarmi l’esportazione; ma con un piccolo miglioramento, potreste estrapolare lo shortcode da qualsiasi punto del content.

Il trucchetto che ho usato è immediato:

1
2
3
4
5
6
7
8
$descrizione=get_the_content(); //intero content

$pos=strpos($descrizione, ']')+1; //posizione della prima ]
$slide=substr($descrizione, 0, $pos); //shortcode della slide
$description=trim(str_replace($slide, '', $descrizione)); //descrizione senza la slide

echo do_shortcode($slide); //converto lo shortcode della slide in codice html
echo $description; //stampo solo la descrizione senza la slide
Fonti esterne

Documentazione ufficiale di WordPress sugli Shortcode API

Copyright immagini

(1) http://www.masquewordpress.com/ejecutar-widgets-con-shortcodes/

Etichette
Etichette:, ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.