Capire come funzionano i WordPress Hooks è essenziale se vogliamo cominciare a parlare di sviluppo con WordPress e magari se intendiamo farlo in maniera professionale e come possiamo intervenire con Filters e Actions per personalizzare, estendere e potenziare WordPress. Per intervenire ed interagire nei nostri temi, nei nostri plugin o in altre iniziative di sviluppo personalizzato WordPress mette a disposizione delle API (Application Programming Interface) e gli Hooks sono il modo in cui il tuo codice può interagire in punti predefiniti.
Quindi i WordPress Hooks sono una caratteristica cruciale che consente agli sviluppatori di inserire codice personalizzato nell’elaborazione PHP di WordPress, a specifici incroci durante l’elaborazione. E come si puó fare questa operazione? Scrivendo codice personalizzato in funzioni PHP (hooked function) ed esistono due tipi di hooked function: Actions e Filters.
Funzioni (Functions)
La maggior parte degli sviluppatori nella scrittura di codice per WordPress usa le funzioni (functions) e molto probabilmente anche tu, se hai aggiunto del codice al file functions.php
del tema WordPress, avrai scritto una funzione.
Le funzioni definiscono la maniera o le modalitá in cui qualcosa dovrá succedere nel tema o nel plugin. Puoi scrivere una funzione per eseguire delle query sui dati, per visualizzare del contenuto o per eseguire tante altre attività. E’ possibile eseguire funzioni nei files del template del tuo tema, oppure puoi agganciarle (Hook) tramite filters o actions. Si possono anche inserire ad esempio template tags o conditional tags (tag specifici dei templates o tag condizionali) per specificare quando si deve applicare la funzione.
Azioni (Actions)
Le azioni (Action Hooks o Actions) vengono innescate o attivate quando qualcosa si sta eseguendo o ha il suo svolgimento, come puó essere il caricamento di una pagina, il log-in di un utente o un’azione personalizzata qualsiasi che viene definita nel tuo tema o plugin.
È possibile aggiungere la propria azione mediante la funzione do_action()
. Tutte le funzioni che si agganciano a questa azione verranno eseguita in quel punto del codice. Non hanno bisogno del return
di un valore e spesso non vengono passati parametri specifici tramite i loro hook di azione.
Filtri (Filters)
I filtri (Filter Hooks o Filters), controllano in che modo succede qualcosa o modificano qualcosa che è in uscita (output). Si puó usare un filtro per l’output dei metadati in uno specifico formato, per sovrascrivere l’output del testo dal vostro plugin, o per evitare che qualcosa venga visualizzato.
Per aggiungere filtri nel codice ai utilizza la funzione apply_filters()
. Appunto come la parola “apply” (applica) sta ad indicare, è possibile applicare filtri al codice esistente, mentre un’azione che si crea utilizzando do_action()
è vuota o fino a quando non vi si collegano le funzioni. Quindi I filtri sono codice passato dagli hooks o modificatori dei loro hooks; essi modificano cioè “filtrano” e devono passare il return
del risultato a WordPress che lo utilizzerá nella sua normale elaborazione.
Usiamo le Funzioni, le Azioni ed i Filtri
Esempio di utilizzo di una funzione filtro (filter):
Proviamo a dare le spiegazioni sul fuzionamento di questo codice:
- Il nostro filtro, cioè il codice che si aggancia al nostro hook di filtro, è in effetti una funzione PHP, da cui la
function { }
. mb_filter_example
è il nome della funzione filtro.($title)
è l’ argomento singolo della funzione. È ciò che WordPress (tramite il proprio WordPress Core) passa per lavorare.return 'Questo é il mio titolo: '.$title;
è il lavoro che fa la funzione. Aggiunge la frase “Questo é il mio titolo:” al titolo che è stato passato e lo restituisce al core di WordPress per continuare a elaborarlo regolarmente.return
è molto importante: è come la funzione restituisce il suo lavoro al core di WordPress. Questa linea è forse la migliore da leggere da destra a sinistra: in pratica gli diciamo: “Prendi il titolo normale e aggiungilo ” o meglio aggancialo: ” prima, quindi tornalo indietro “.add_filter('the_title', 'mb_filter_example');
è molto importante ed è la modalitá di aggiunta delle funzioni del filtro!
Descriviamo meglio l’ultima riga:
add_filter( );
è una funzione di WordPress. Dice: “Agganciare un nuovo filtro su un gancio filtro esistente.”'the_title'
è il nome del gancio del filtro che stiamo andando ad usare.'mb_filter_example'
è il nome del filtro che abbiamo scritto, o meglio la funzione, e che vogliamo agganciare all’hook del filtro (in questo casothe_title
) che abbiamo specificato.
Quindi il filtro mb_filter_example()
aggancia al filtro hook the_title
. Quando lo fa, aggiunge semplicemente “Questo é il mio titolo:” al titolo e lo restituisce.
Il risultato di questa elaborazione potrebbe essere simile a questo:
Se notate bene è stata aggiunta la frase “Questo è il mio titolo” a tutti i titoli degli articoli presenti nel loop della pagina.
Esempio di utilizzo di una funzione azione (action):
Se hai capito l’esempio del filtro precedentemente fatto, capirai quasi tutto su anche su questo esempio di un’azione WordPress:
function mb_action_example() {}
significa che questa azione (o funzione di azione) è chiamatamb_action_example()
e non contiene argomenti.echo "© Copyright - all rights reserved.";
è ciò che fa la funzione, in pratica scrive una frase nel footer del sito web.add_action('wp_footer', 'mb_action_example');
aggancia l’ azionemb_action_example
alla funzione di WordPresswp_footer
.
Su un sito web, il nostro esempio di azione otterrá questo risultato:
Cioè potrete notare la frase “Copyright ……. ” in basso nel footer dell’immagine del sito web.
Come abbiamo notato, la principale differenza dall’esempio del nostro filtro è che la funzione agganciata non ha un return
e non restituisce nulla. Invece, esegue l’istruzione PHP echo
e visualizza un messaggio direttamente sulla pagina. Dove verrà inserito questo messaggio? Viene inserito nella sezione del piè di pagina (footer) ed ovunque l’autore del tema abbia inserito l’azione di WordPress wp_footer
.
Questa in pratica é la principale differenza – le azioni possono fare quasi tutto, i filtri devono eseguire un return
ovvero restituire delle modifiche a ciò che viene passato.
Riepilogo
Capire la differenza tra azioni e filtri ed essere in grado di utilizzare efficacemente entrambi darà maggior vigore al tuo sviluppo di temi e plugin. Senza l’utilizzo di ganci (azioni e filtri) di almeno un tipo, in pratica non è possibile scrivere plugin, l’unico modo in cui il codice del tuo plugin viene attivato è tramite azioni o filtri ai quali è collegato.
Padroneggiare l’utilizzo di azioni e filtro ti dará infinite possibilitá di intervento e modifica nei tuoi temi e plugin di WordPress.