Il tuo carrello è attualmente vuoto!
Indice dell’articolo
Chi sviluppa con WordPress prima o poi inciampa in: action e filter. Sono la spina dorsale della personalizzazione di WordPress: permettono di aggiungere, modificare o rimuovere funzionalità senza toccare il core.
Indice dei contenuti
- Introduzione agli Hook di WordPress
- Cosa sono gli hook: azioni e filtri
- Come funziona
add_action
- Come funziona
add_filter
- Esempi pratici di azioni
- Esempi pratici di filtri
- Creare i propri hook personalizzati
- Azioni custom
- Filtri custom
- Differenza tra azioni e filtri
Cosa sono gli hook?
Un hook è un gancio che WordPress mette a disposizione in vari punti del suo codice. Quando il flusso arriva a quel punto, WordPress controlla se qualcuno ha agganciato del codice personalizzato, e se sì, lo esegue.
Gli hook si dividono in due grandi famiglie:
- Azioni (
do_action
)
Ti permettono di eseguire codice aggiuntivo in un preciso momento.
Esempio: aggiungere un campo personalizzato al form di creazione di una categoria. - Filtri (
apply_filters
)
Ti permettono di modificare un valore prima che venga usato o mostrato.
Esempio: cambiare il titolo di un post prima della stampa.
add_action
: attaccare funzioni alle azioni
La sintassi è questa:
add_action( $hook_name, $callback, $priority, $accepted_args );
- $hook_name → il nome dell’azione (es.
init
,wp_footer
,category_add_form_fields
). - $callback → la funzione da eseguire.
$hook_name
È semplicemente una stringa che identifica un punto preciso del flusso di WordPress.
Può essere:
- Un hook core di WordPress (già pronto):
init
→ viene eseguito all’inizio, quando WordPress ha caricato quasi tutto.wp_footer
→ viene eseguito subito prima della chiusura del tag</body>
.category_add_form_fields
→ viene eseguito nel form di creazione di una categoria in admin.
- Un hook personalizzato che puoi creare tu stesso in un tema o plugin, usando
do_action
(per azioni) oapply_filters
(per filtri).
do_action('mio_hook_speciale');
Poi lo richiami con:
add_action('mio_hook_speciale', 'mia_funzione');
$callback
È il nome della funzione (o di un metodo) che verrà chiamata quando scatta l’hook. Esempio base:
add_action('wp_footer', 'mia_firma');
function mia_firma() {
echo 'Sito creato da IOCOS';
}
Puoi passare come callback:
- Una funzione semplice (come sopra).
- Una funzione anonima (closure):
add_action('wp_footer', function() {
echo 'Footer dinamico';
});
Un metodo di classe:
add_action('init', [$this, 'setup']);
$priority
Quando più funzioni sono agganciate allo stesso hook, WordPress deve decidere in che ordine eseguirle.
- Di default, tutte le funzioni hanno priorità 10.
- Un numero più basso significa che la funzione viene eseguita prima.
- Un numero più alto significa che viene eseguita dopo.
add_action('wp_footer', 'prima_funzione', 5); // si esegue per prima
add_action('wp_footer', 'seconda_funzione', 10); // si esegue dopo
add_action('wp_footer', 'ultima_funzione', 20); // si esegue per ultima
$accepted_args
Alcuni hook passano dei parametri alla tua funzione callback. Con $accepted_args
indichi a WordPress quanti di questi parametri vuoi ricevere.
Esempio con un filtro:
// Hook the_content passa 1 argomento: $content
add_filter('the_content', 'mia_funzione', 10, 1);
function mia_funzione($contenuto) {
return $contenuto . 'Testo aggiunto';
}
Se invece l’hook passa più valori, puoi decidere quanti accettarne.
// save_post passa 3 argomenti: $post_ID, $post, $update
add_action('save_post', 'mia_funzione', 10, 3);
function mia_funzione($post_ID, $post, $update) {
// uso solo $post_ID e $post
}
- Se metti
$accepted_args = 1
, riceverai solo il primo argomento, anche se l’hook ne manda 3. - Se metti
$accepted_args = 2
, ricevi i primi due. E così via.
Azioni comuni da conoscere
save_post
→ intercettare il salvataggio di un post.init
→ uno dei più usati, perfetto per registrare custom post type o tassonomie.wp_enqueue_scripts
→ usato per caricare CSS e JS.admin_menu
→ aggiungere voci di menu nell’area admin.
add_filter
: modificare valori al volo
La sintassi è questa:
add_filter( $hook_name, $callback, $priority, $accepted_args );
Differenza: la funzione callback deve restituire (return) un valore, perché WordPress si aspetta di ricevere indietro la variabile modificata.
Esempio pratico:
// Aggiungo un suffisso ai titoli dei post
add_filter('the_title', 'mio_suffisso_titolo');
function mio_suffisso_titolo($title) {
if (is_singular('post')) {
return $title . ' testo nuovo';
}
return $title;
}
Filtri comuni da conoscere
the_content
→ modifica il contenuto dei post e delle pagine.the_title
→ modifica i titoli dei post.excerpt_more
→ cambia il testo “Leggi tutto” degli estratti.upload_mimes
→ aggiunge nuovi tipi di file caricabili.
Creare i propri hook
Non esistono solo quelli di WordPress: puoi crearne di tuoi nei plugin o nei temi.
Action personalizzata
do_action('mio_hook_personalizzato', $argomento);
E in un altro file:
add_action('mio_hook_personalizzato', 'mia_funzione');
function mia_funzione($argomento) {
// codice che reagisce al tuo hook
}
Filter personalizzata
$valore = apply_filters('mio_filtro', $valore);
E in un altro file:
add_filter('mio_filtro', 'mia_modifica');
function mia_modifica($valore) {
return strtoupper($valore);
}
Azioni vs Filtri: la differenza chiave
- Le azioni eseguono codice. Non devono restituire nulla.
- I filtri trasformano dati. Devono sempre restituire un valore.
Ricordati: se usi un filtro e non ritorni niente, spezzi il flusso di WordPress
Condividimi
