Quante volte posso collegarmi alla stessa azione?


8

Ho un tema che include alcune impostazioni, usando after_setup_themema mi piacerebbe scrivere le mie funzioni che devono essere eseguite after_setup_theme. Preferirei conservare le mie cose in un file separato. Posso chiamare after_setup_themepiù volte?

Risposte:


27

Gli hook di WordPress funzionano come Hollywood: non li chiami, ti chiamano. Ma a differenza di Hollywood, continuano a chiamare tutti nella lista.

È normale che un'azione o un filtro abbiano più funzioni agganciate ad esso, da plug-in diversi o anche solo funzioni diverse nel core di WordPress che fanno qualcosa di specifico . Non è solo possibile, ma anche una buona pratica, poiché significa che il codice diventa più chiaro (ogni funzione fa solo una cosa) ed è più facile disabilitare una specifica funzionalità disancorandola.

Ricorda che puoi anche giocare con le priorità degli hook: se vuoi eseguire entrambi functionA()e functionB()in after_setup_theme, ma functionA()devi eseguirlo prima functionB(), puoi agganciarti functionA()con la priorità predefinita 10e functionB()con la priorità 20(o qualsiasi altro numero superiore a 10). Ciò che non funzionerà è associare un'altra funzione a un'azione mentre quell'azione è in esecuzione . Così non si può agganciare functionB()a after_setup_themeda functionA(), ha invitato after_setup_theme. Potresti chiamarlo direttamente, ma perderesti il ​​vantaggio di hook separati.


7

Il mio suggerimento sarebbe di avere una funzione "master", se vuoi, che chiami tutte le altre funzioni. In questo modo devi solo agganciarti a quell'azione 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(){ /* Do something */}
function func_b(){ /* Do something */}
function func_c(){ /* Do something */}
function func_d(){ /* Do something */}
function func_e(){ /* Do something */}

Ciò ha l'ulteriore vantaggio di poter restituire valori che è possibile utilizzare nelle successive chiamate di funzione.


4

Sì, puoi aggiungere tutte le azioni al gancio che desideri. Provalo e basta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.