Quante volte posso agganciarmi alla stessa azione?
Ho un tema che include alcune configurazioni utilizzando after_setup_theme
, ma vorrei scrivere le mie funzioni che devono essere eseguite anch'esse con after_setup_theme
. Preferirei mantenere il mio codice in un file separato. Posso chiamare after_setup_theme
più volte?
Gli hook di WordPress funzionano come Hollywood: non sei tu a chiamarli, sono loro a chiamare te. Ma a differenza di Hollywood, continuano a chiamare tutti quelli presenti nella lista.
È normale che un'azione o un filtro abbia più funzioni collegate, provenienti da plugin diversi, o anche solo diverse funzioni nel core di WordPress che fanno tutte qualcosa di specifico. Non solo è possibile, ma è anche una buona pratica, perché significa che il tuo codice diventa più chiaro (ogni funzione fa solo una cosa) ed è più semplice disabilitare un pezzo specifico di funzionalità scollegandolo.
Ricorda che puoi anche giocare con le priorità degli hook: se vuoi eseguire sia functionA()
che functionB()
in after_setup_theme
, ma functionA()
deve essere eseguita prima di functionB()
, puoi collegare functionA()
con la priorità predefinita 10
e functionB()
con priorità 20
(o qualsiasi altro numero superiore a 10). Ciò che non funzionerà è collegare un'altra funzione a un'azione mentre quell'azione è in esecuzione. Quindi non puoi collegare functionB()
a after_setup_theme
da functionA()
, chiamata su after_setup_theme
. Potresti chiamarla direttamente, ma perderesti il vantaggio degli hook separati.

Il mio suggerimento sarebbe di avere una funzione "master", se vuoi, che richiama tutte le altre funzioni. In questo modo devi agganciarti a quell'azione solo una volta.
add_action( 'after_setup_theme', 'master_function' );
function master_function()
{
func_a();
func_b();
func_c();
func_d();
func_e();
}
function func_a(){ /* Fai qualcosa */}
function func_b(){ /* Fai qualcosa */}
function func_c(){ /* Fai qualcosa */}
function func_d(){ /* Fai qualcosa */}
function func_e(){ /* Fai qualcosa */}
Questo ha il vantaggio aggiuntivo di poter restituire valori che puoi utilizzare nelle chiamate successive alle funzioni.
