De câte ori pot folosi același hook de acțiune?

10 ian. 2011, 23:33:20
Vizualizări: 16.4K
Voturi: 11

Am o temă care include unele setări folosind after_setup_theme, dar aș dori să scriu propriile funcții care trebuie să ruleze tot prin after_setup_theme. Aș prefera să păstrez codul meu într-un fișier separat. Pot să apelez after_setup_theme de mai multe ori?

0
Toate răspunsurile la întrebare 3
0
34

Hooks-urile din WordPress funcționează ca Hollywood: nu tu îi apelezi, ei te apelează pe tine. Dar spre deosebire de Hollywood, ei continuă să sune pe toată lumea de pe listă.

Este normal ca o acțiune sau un filtru să aibă multiple funcții atașate, din diferite plugin-uri, sau chiar din diferite funcții din nucleul WordPress care fac fiecare ceva specific. Nu numai că este posibil, dar chiar este o bună practică, deoarece codul tău devine mai clar (fiecare funcție face un singur lucru) și este mai ușor să dezactivezi o anumită funcționalitate prin deconectarea ei.

Ține minte că poți manipula și prioritățile hook-urilor: dacă vrei să rulezi atât functionA() cât și functionB() în after_setup_theme, dar functionA() trebuie să ruleze înaintea lui functionB(), poți atașa functionA() cu prioritatea implicită 10 și functionB() cu prioritatea 20 (sau orice alt număr peste 10). Ceea ce nu va funcționa este atașarea unei alte funcții la o acțiune în timp ce acea acțiune se execută. Deci nu poți atașa functionB() la after_setup_theme din interiorul lui functionA(), care este apelată de after_setup_theme. Ai putea să o apelezi direct, dar ai pierde beneficiul hook-urilor separate.

11 ian. 2011 10:03:40
0

Sugestia mea ar fi să aveți o funcție "principală", dacă doriți, care să apeleze toate celelalte funcții. În acest fel, trebuie să adăugați hook-ul la acea acțiune doar o singură dată.

add_action( 'after_setup_theme', 'master_function' );
function master_function()
{
    func_a();
    func_b();
    func_c();
    func_d();
    func_e();
}
function func_a(){ /* Fă ceva */ }
function func_b(){ /* Fă ceva */ }
function func_c(){ /* Fă ceva */ }
function func_d(){ /* Fă ceva */ }
function func_e(){ /* Fă ceva */ }

Această abordare are avantajul suplimentar de a putea returna valori pe care le puteți utiliza în apelurile ulterioare de funcții.

26 apr. 2012 15:29:47
0

Da, poți adăuga câte acțiuni dorești la hook. Încearcă pur și simplu.

11 ian. 2011 02:27:01