WordPress Hooks, Actions & Filters: cosa fanno e come funzionano

Se vogliamo cominciare a parlare di sviluppo con WordPress e tanto piú se intendiamo farlo in maniera professionale, é essenziale cominciare a capire gli Hooks di WordPress 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 ci consentono di farlo.

Quindi gli hooks di WordPress 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. 

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 sicuramente 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.

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 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.

I filtri (Filter Hooks o Filters), controllano in che modo succede qualcosa o cambiano qualcosa che è in uscita. 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.

Esempio di utilizzo di una funzione filtro (filter):

Ecco le spiegazioni sul fuzionamento di questo codice:

  1. Il nostro filtro, cioè il codice che si aggancia al nostro hook di filtro, è in effetti una funzione PHP, da cui la function { } .
  2. mb_filter_example è il nome della funzione filtro.
  3. ($title) è l’ argomento singolo della funzione. È ciò che WordPress (tramite il proprio WordPress Core) passa per lavorare.
  4. 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.
  5. 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 “.
  6. add_filter('the_title', 'mb_filter_example'); è molto importante ed è la modalitá di aggiunta delle funzioni del filtro!

Descriviamo meglio l’ultima riga:

  1. add_filter( ); è una funzione di WordPress. Dice: “Agganciare un nuovo filtro su un gancio filtro esistente.”
  2. 'the_title' è il nome del gancio del filtro che stiamo andando ad usare.
  3. 'mb_filter_example' è il nome del filtro che abbiamo scritto, o meglio la funzione, e che vogliamo agganciare all’hook del filtro (in questo caso the_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:

  1. function mb_action_example() {} significa che questa azione (o funzione di azione) è chiamata mb_action_example() e non contiene argomenti.
  2. echo "© Copyright - all rights reserved."; è ciò che fa la funzione,  in pratica scrive una frase nel footer del sito web. 
  3. add_action('wp_footer', 'mb_action_example'); aggancia l’ azione mb_action_example alla  funzione di WordPress wp_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:

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.

Lascia un commento