Dalla versione 2.5 WordPress ha messo a disposizione gli shortcodes. Ossia dei piccoli segmenti di codice che sono in grado di richiamare autonomamente delle funzioni predefinite che in questo caso vengono chiamate macro.

Gli Shortcodes di WP sono racchiusi fra parentesi quadre [] e ovviamente le macro sono in linguaggio PHP.
Il loro utilizzo è realmente molto semplice.
A esempio una possibile implementazione potrebbe essere

[recent-posts]

ma negli shortcodes è possibile anche passare i parametri per esempio

[recent-posts = 2]

Oppure è possibile visualizzare del testo nella seguente maniera

[recent-posts posts="2"]Ultimi 2 articoli pubblicati[/recent-posts]

Ovviamente come già avrete notato gli Shortcode si possono mettere ovunque nel codice dei file php negli articoli, pagine, media, widget.
Il loro funzionamento è etremamente semplice e intuitivo.

Per esempio

[nome-shortcode]
  • Inserite il nome dello shortcode. Una volta fatto create una funzione wordpress che richiama il nome dello shortcode
  • la registrate con un nome unico
  • create un action che chiama una funzione di callback.

Mettete tutto in functions.php oppure in una funzione che sia richiamabile proprio da functions.php

Vediamo un esempio creiamo una funzione che richiamai in ordine di data gli ultimi 5 articoli inseriti in ordine di data. Ossia

function ultimi_articoli_function() {
 query_posts(array('orderby' => 'date', 'showposts' => 5));
 if (have_posts()) :
 while (have_posts()) : the_post();
 $return_string = '<a href="'.get_permalink().'">'.get_the_title().'</a>';
 endwhile;
 endif;
 wp_reset_query();
 return $return_string;
}

Ormai siete esperti e quindi non vi commento tanto dovrebbe risultarte tutto abbastanza intuitivo. A questo punto la funzione va registrata e per fare questo useremo

function register_shortcodes(){
 add_shortcode('ultimi_articoli', 'ultimi_articoli_function');
}

Una volta fatto qusto dovremo creare il gancio . Ossia

add_action( 'init', 'register_shortcodes');

a questo punto potremmo inserire lo shortcode creato in maniera molto semplice ossia.

[ultimi_articoli]

e nel luogo dove l’avete inserito visualizzerà gli ultimi cinque articoli immessi.
Passiamo al passo successivo. WordPress ha come sua peculiarità la flessibilità. Noi nell’esempio sopra abbiamo impostasto a 5 gli articoli da mostrare, ma potevamo fare questo settaggio anche dallo shortcode direttamente.
Per fare questo abbiamo bisogno di di due funzioni

  • shortcode_atts() che semplicemente combina gli attributi passati con gli attributi nativi delle funzioni che saranno utilizzate.
  • extract() è puramente una funzione PHP che estrate gli attributi passati. Aggiornamento attualmente questa funzione è caduta in disuso e ultimamente gli autori di WordPress ne hanno sconsiglio il suo utilizzo. Per questo motivo non la ritroverete nel resto della trattazione.

Facciamo un esempio . La precedente funzione adetto diventa

function ultimi_articoli_function($atts){
 shortcode_atts(array(
 'articoli' => 1,
 ), $atts);

$return_string = '<ul>';
 query_posts(array('orderby' => 'date', 'order' => 'DESC' , 'showposts' => $articoli));
 if (have_posts()) :
 while (have_posts()) : the_post();
 $return_string .= '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
 endwhile;
 endif;
 $return_string .= '</ul>';

wp_reset_query();
 return $return_string;
}

mentre tutto il resto rimane inviariato. Spieghiamo un attimo il funzionamento. Dopo shortcode_atts viene “caricata” la variabile posts come viene caricata?

$posts assume il valore 1 se in $atts non è provvisto diversamente. Per sempio se lo short_code ha valore

[ultimi_articoli articoli= 5]

in qusto caso la variabile $articoli avrà valore 5
Invece se avessimo avuto

[ultimi_articoli]

In questo caso la variabile $articoli avrebbe valore di default che in questo caso dell’esempio sopra rappresenta 1.
Ora che l’abbiamo vista per bene vediamo quindi nello specifico
la funzione inoltre permette di passare anche il contenuto presente nei tag. Vediamo come. Consideriamo il seguente esempio

function caption_shortcode( $atts, $content = null ) {
 return '<span class="caption">' . $content . '</span>';
}
add_shortcode( 'caption', 'caption_shortcode' );

Se inseriamo il codice



My Caption



otterremo in risposta

<span class="caption">My Caption</span>

Se invece vogliamo ottenere in risposta un link ad esempio


<a href="http://esempio.estensione/">LINK DI ESEMPIO</a>

e in risposta avremo

<span class="caption"><a href="http://esempio.estensione/">LINK DI ESEMPIO</a></span>

Se invece il codice incluso nello shortcode è a sua volta un’altro shortcode si vede utilizzare la funzione do_shortcode(). Vediamo un esempio

function caption_shortcode( $atts, $content = null ) {
 return '<span class="caption">' . do_shortcode($content) . '</span>';
}