Se vogliamo cominciare a parlare di sviluppo con WordPress e tanto piú se intendiamo farlo in maniera professionale, é essenziale cominciare a capire i Wordprss Hooks e come possiamo intervenire con WordPress Filters e WordPress Actions per personalizzare, estendere e potenziare l'utilizzo di 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 ci consentono di usare questi comandi.
Quindi i WordPress hooks sono una caratteristica cruciale che consente agli sviluppatori di inserire codice personalizzato nell'elaborazione PHP di WordPress, in incroci specifici durante l'elaborazione del CMS. E come si puó fare questa operazione? Scrivendo codice personalizzato all'interno di funzioni PHP (hooked function) ed esistono due tipi di hooked function: Actions e Filters.
WordPress Hooks: functions, actions, filters.
Funzioni (Functions)
La maggior parte degli sviluppatori quando inizia a scrivere codice per WordPress usa per prima cosa le funzioni (functions). Probabilmente, se hai aggiunto del codice al file functions.php
del tema WordPress avrai scritto una funzione PHP.
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 svolge, come può essere il caricamento di una pagina, il log-in di un utente o un'azione personalizzata che viene definita nel tuo tema o plugin.
È possibile aggiungere la propria azione mediante la funzione predefinita da WordPress do_action()
. Tutte le funzioni che si agganciano a questa azione verranno eseguite 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 cambiano qualcosa che è in 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, indica, è possibile applicare filtri al codice esistente, mentre un'azione che si crea utilizzando do_action()
è vuota fino a quando non vi si collegano le funzioni. Quindi I filtri sono codice passato o modificatori dei loro hook; essi modificano ciò "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):
Ecco 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:
Esempio di utilizzo di una funzione azione (action):
Se l'esempio del filtro precedentemente fatto ti é risultato chiaro capirai quasi tutto 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
.
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), 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 return
ovvero restituire delle modifiche a ciò che viene passato - , tra le due funzioni che sono altrimenti abbastanza simili.
Su un sito web, il nostro esempio di azione otterrá questo risultato:
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 WordPress hooks, 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.