Cosa sono e come funzionano gli shortcode in WordPress

Cosa sono e come funzionano gli shortcode in WordPress

In questo articolo illustreremo il modo con cui creare e gestire gli shortcode.

Cosa sono gli shortcode

Partiamo dalle basi. Uno shortcode in WordPress (solitamente nella forma [shortcode] non è altro che una macro con cui possiamo inserire nei post e nelle pagine dei frammenti di codice HTML.

WordPress individua lo shortcode nel contenuto e lo espande utilizzando la funzione associata al suo nome tramite la funzione core add_shortcode().

Gli shortcode sono in genere creati da temi o plugin. Quando rimuovete un tema o un plugin che ha generato lo shortcode, lo shortcode viene mostrato non espanso nella sua forma letterale, ossia come [shortcode]. Infatti gli shortcode vengono sempre salvati in modo letterale nel database. Solo l'engine di WordPress può espanderli.

Nella sua forma più semplice la registrazione di uno shortcode è come segue:

function my_shortcode() {
  $html = '<p>Test.</p>';
  return $html;
}
add_shortcode( 'test', 'my_shortcode' );

Inserendo questo codice nel file functions.php o in un plugin creerete lo shortcode [test] che restituirà la stringa HTML specificata.

La cosa fondamentale da capire nel funzionamento degli shortcode è che non dovete mai usare l'operatore echo ma sempre restituire l'output tramite return.

Se volete forzare l'esecuzione di uno shortcode nel vostro tema, ossia al di fuori del contenuto dei post o delle pagine, potete usare la funzione do_shortcode():

echo do_shortcode( '[test]' );

Solitamente gli shortcode non sono abilitati nei widget. Potete comunque abilitarli utilizzando il filtro widget_text:

add_filter( 'widget_text', 'do_shortcode' );

Abbiamo sinora visto gli shortcode nella loro forma essenziale, ma gli shortcode possono accettare attributi e contenuto.

Gli attributi, nella forma [shortcode attributo="valore"], servono ad inserire delle variabili impostate dall'utente per modificare il comportamento dello shortcode.

Vengono definiti in questo modo:

function my_shortcode( $atts ) {
  extract( shortcode_atts( array( 
    'foo' => '',
    'bar' => ''
  ), $atts ) );
$html = '<p class="' . $foo . '" title="' . $bar . '">Test</p>';
return $html;
}
add_shortcode( 'test', 'my_shortcode' );

'foo' e 'bar' sono i nomi dei nostri attributi che vengono estratti come variabili, ossia come $foo e $bar. Quello che facciamo usando l'array associativo è semplicemente dichiarare dei valori predefiniti nel caso in cui l'utente non ne specifichi nessuno.

Ma gli shortcode possono accettare anche del contenuto, nel qual caso vengono scritti usando una notazione simile ai tag HTML, ossia:

[test]Contenuto[/test]

Data la sintassi peculiare usata da WordPress, che si basa sull'ordine degli argomenti delle funzioni PHP, uno shortcode con contenuto viene definito in questo modo:

function my_shortcode( $atts, $content = null ) {
  $html = '<p>' . $content . '</p>';
  return $html;
}
add_shortcode( 'test', 'my_shortcode' );

Per una panoramica completa sulle API degli shortcode, consultate la documentazione ufficiale di WordPress.

Conclusione

Il problema principale nella creazione degli shortcode è un problema di formattazione del suo output. Una volta risolto tale problema, il meccanismo di creazione degli shortcode è molto semplice da capire.

Torna su