Un ghid pentru cârligele WordPress
Publicat: 2021-07-19Sistemul de cârlige poate părea descurajant pentru cei neinițiați, dar sunt unul dintre cele mai bune lucruri despre WordPress. Acest ghid vă va ajuta să înțelegeți fundamentele cârligelor și cum să le utilizați, oferind exemple de utilizare și sfaturi suplimentare.

De ce ar trebui să folosiți cârlige?
În cazul în care nu sunteți deja conștienți, este o idee foarte proastă să schimbați fișierele de bază în WordPress (WP). În afara riscurilor de securitate, modificările dvs. vor fi suprascrise de fiecare dată când actualizați WP! Același lucru este valabil și pentru pluginuri și teme.
Sigur, ați putea urmări fiecare actualizare și re-implementa modificările. De asemenea, ai putea să dai cu pumnul într-un stup pentru a ajunge la miere. S-ar putea să pară convenabil, dar probabil că veți fi înțepați mai devreme sau mai târziu.
Pur și simplu, ar trebui să utilizați cârlige, deoarece acestea compensează riscurile schimbării funcționalității de bază .
În acest sens, importanța cârligelor nu poate fi exagerată . Acestea sunt cheia extensibilității WP și o piatră de temelie a ecosistemelor sale de pluginuri și teme. Vă veți salva o mulțime de dureri de cap învățând elementele de bază și folosindu-le bine.
Ce sunt ei?
Vă puteți gândi la cârlige ca la evenimente care apar pe parcursul secvenței de încărcare WP. Când WP întâlnește un cârlig, acesta declanșează toate funcțiile atașate acelui cârlig înainte de a continua.
Puteți, astfel, să folosiți cârlige pentru a adăuga funcționalitate sau pentru a schimba variabile în WP . Puteți utiliza cârlige existente și puteți adăuga altele noi. Puteți scoate cârligele de care nu aveți nevoie. Puteți lovi același cârlig de mai multe ori, acordând prioritate fiecărei funcții după cum doriți. Este un sistem foarte flexibil, limitat doar de ce cârlige sunt disponibile și ce date expun.
Cum funcționează?
Adăugați una sau mai multe funcții la un cârlig. Alte funcții pot fi adăugate și de tema dvs., de pluginuri sau de WP în sine. Când WP se încarcă, va întâlni cârligul. Verifică o listă a tuturor funcțiilor asociate cârligului. WP rulează toate aceste funcții în ordine de prioritate . Odată terminat, se reia încărcând totul după cârlig.
Cum arată?
Adăugarea unei funcții la un cârlig arată astfel:
add_action ($ hook_name, $ function_name, $ prioritate, $ argumente);
$ hook_name este numele cârligului pe care doriți să îl vizați
$ nume_funcție este numele funcției pe care doriți să o adăugați la acel cârlig
$ prioritate este un număr întreg care indică Nume_functie $ e $ prioritate în hook_name lui coadă. Cu cât numărul este mai mic, cu atât este mai mare prioritatea. Începând de la 1, acest număr poate fi la fel de mare pe cât doriți (în limitele sistemului), dar este puțin probabil să îl vedeți mai mare de 40. Valoarea implicită este 10.
$ arguments este un număr întreg care indică numărul de argumente pe care le utilizați în funcție. Aceasta trebuie să se potrivească cu numărul de argumente transmise funcției. Valoarea implicită este 1.
Eliminarea unei funcții dintr-un cârlig este aproape aceeași:
remove_action ($ hook_name, $ function_name, $ prioritate);
De $ FUNCTION_NAME și $ prioritate trebuie să se potrivească valorile lor inițiale din funcția ADD_ACTION corespunzătoare, sau nu vor fi eliminate!
Tipuri de cârlig
Există două tipuri principale de cârlige: cârlige de acțiune și cârlige de filtrare . Sunt similare din multe puncte de vedere - add_action () și omologul său add_filter () sunt ambele apelate în același mod. Diferența constă în funcția prin care treceți:
// Rulați un cod
add_action ('unde_pentru_fă_ceea', 'face_ce_ceva');
funcția faceți_ceva () {
// Efectuați o acțiune necesară pentru a face treaba
}// Schimbați o variabilă
add_filter ('the_thing', 'change_the_thing');
funcție change_the_thing ($ lucru) {
// Filtrați $ chestie și schimbați la orice aveți nevoie, apoi ...returnează $ lucru;
}
De notat că în al doilea exemplu, primul argument a trecut la functio n este valoarea fiind modificată. Orice argumente suplimentare ar fi doar pentru utilitate și nu sunt transmise înapoi prin cârlig.
Poate ați observat că am lăsat deoparte $ prioritate și $ argumente . Acest lucru se datorează faptului că valorile implicite sunt în regulă. Dacă ajută, cele de mai sus sunt în esență aceleași ca:
// Rulați un cod
add_action ('unde_pentru_fă_ceea', 'face_ce_ceva', 10, 1);
// Schimbați o variabilă
add_filter ('the_thing', 'change_the_thing', 10, 1);
Acestea sunt exemple inventate, desigur, dar ilustrează diferența principală dintre cele două: filtrele sunt pentru schimbarea variabilelor, acțiunile sunt pentru adăugarea de cod.
Exemple mai puțin inventate
Să presupunem că doriți ca WP să trimită o notificare prin e-mail atunci când un utilizator nou se înregistrează pe site-ul dvs. Referindu-vă la codul WP, găsiți cârligul de acțiune user_register . Aceasta vă oferă o variabilă $ user_id , pe care o puteți utiliza pentru a obține detaliile utilizatorului. wp_mail () se ocupă de restul:
add_action ('user_register', 'notification_on_user_registration');
funcție notification_on_user_registration ($ user_id) {// Obțineți utilizatorul
$ utilizator = get_user_by ('id', $ user_id);// Pregătiți subiectul și corpul e-mailului
$ subiect = „Înregistrare utilizator nou”;
$ message = „Un utilizator nou {$ user-> first_name} {$ user-> last_name} s-a înregistrat.”;// Trimiteți e-mailul
wp_mail ('[email protected]', $ subject, $ message);
}
Ce se întâmplă dacă doriți să redirecționați utilizatorii către pagina dvs. principală la conectare? Obțineți acest lucru cu ușurință cu cârligul login_redirect , care furnizează adresa URL către care utilizatorii sunt redirecționați în mod implicit:

add_filter ('login_redirect', 'redirect_user_on_login');
funcție redirect_user_on_login ($ redirect_to) {
intoarce home_url ();
}
La scurt timp după ce adăugați acest lucru, vă dați seama rapid că, în calitate de administrator, doriți să fiți condus direct la tabloul de bord WP în loc de pagina de pornire. Nu este o problemă - doar modificați cârligul pentru a funcționa doar pentru administratori:
add_filter ('login_redirect', 'redirect_user_on_login', 10, 3);
function redirect_user_on_login ($ redirect_to, $ request, $ user) {
// Schimbați adresa URL de conectare, cu excepția cazului în care utilizatorul este administrator
if (isset ($ utilizator-> roluri) && is_array ($ utilizator-> roluri)) {
if (in_array ('administrator', $ utilizator-> roluri)) {
returnează $ redirect_to; // Redirecționați administratorii la valorile implicite (zona de administrare)
}
}returnează $ redirect_to;
}
Observați că $ prioritate și $ argumente au intrat în joc!
Deoarece aveți nevoie de acces la al treilea argument al cârligului pentru a verifica nivelul utilizatorului, trebuie să afișați 3 argumente; treci o valoare de 3.
Valoarea de prioritate $ 10 este aceeași cu valoarea implicită, desigur, dar este specificată pentru a ajunge la valoarea argumentelor $ de care aveți nevoie mai sus.
Crearea propriilor cârlige
Puterea de a crea cârlige personalizate este în mâinile tale! Funcțiile furnizate de WP arată astfel:
do_action ($ hook_name, $ arg_1, $ arg_2 ... $ arg_n);
apply_filters ($ hook_name, $ arg_1, $ arg_2 ... $ arg_n);
Din nou, sunt cam asemănătoare. Ambele funcții acceptă un nume - aici numiți cârligul. Toate argumentele următoare sunt aceleași argumente puse la dispoziția funcțiilor pe care le adăugați la acel cârlig. apply_filters () trebuie să aibă cel puțin un argument suplimentar (argumentul fiind filtrat), dar toate celelalte sunt opționale.
De exemplu, dacă doriți să injectați un script de analiză chiar înainte de deschiderea etichetei corpului, dar nu doriți să transformați header.php într-o mizerie:
<? php do_action ('before_body_tag'); ?;>
</head>
<corp>
Apoi, puteți adăuga câte scripturi aveți nevoie:
add_action ('before_body_tag', 'add_analytics_custom');
funcție add_analytics_custom () {
// <script> etichetele și codul de analiză merg aici
}
apply_filters () funcționează ușor diferit. După cum sa discutat mai sus, filtrele sunt utilizate pentru a modifica valorile. Deoarece filtrele returnează o valoare, atribuiți apelul apply_filters () unei variabile:
<? php $ text = apply_filters ('call_to_action_text', 'Despre noi'); ?>
<a href = ”<? php echo get_permalink ('despre'); ?> ”Class =” button cta ”>
<? php echo $ text; ?>
</a>// Alternativ, puteți face ecou direct rezultatului apply_filters ()
<a href = ”<? php echo get_permalink ('despre'); ?> ”Class =” button cta ”>
<? php echo apply_filters ('call_to_action_text', 'Despre noi'); ?>
</a>
Apoi, puteți modifica variabila filtrată după cum este necesar:
add_filter ('call_to_action_text', 'change_call_to_action_text');
funcție change_call_to_action_text ($ text) {
if (is_front_page ()) {
$ text = 'Descoperiți mai multe';
}returnează $ text;
}
Dezavantajele
Niciun sistem nu este perfect, iar cârligele nu fac excepție. Când vine vorba de cârlige de bază, în general trebuie să vă mulțumiți cu ceea ce vi se oferă. Foarte ocazional veți întâlni situații în care un cârlig nu se află în locul cel mai convenabil pentru dvs. Nu se poate face mult atunci când se întâmplă acest lucru, așa că priviți-l ca pe o oportunitate de a găsi o soluție creativă!
De asemenea, deoarece cârligele pot exista oriunde în structura directorului WP, este uneori dificil să găsești unde se întâmplă anumite logici. Acest lucru poate fi compensat prin separarea cârligelor de funcții în propriile lor fișiere.
Sfaturi suplimentare
- Când creați funcții pentru cârlige, asigurați-vă că numele este unic, altfel va apărea un conflict. Același lucru este valabil și pentru numele dvs. personalizate de cârlig și filtru!
- Utilizați cârlige pentru a vă păstra șabloanele nedezvoltate. Câteva cârlige generice do_action () inserate în șabloanele dvs. pot ajuta la menținerea logicii departe de marcare (aproape întotdeauna o idee bună).
- Când instalați un nou plugin, verificați ce cârlige oferă și gândiți-vă cum le-ați putea folosi. Acest lucru este util mai ales pentru momentele inevitabile în care un plugin nu prea face ceea ce doriți.
- Când adăugați o acțiune sau un filtru, puteți înlocui numele funcției cu funcția în sine. Acest lucru poate ajuta la menținerea autonomă a acțiunilor și a filtrelor. Funcțiile adăugate în acest mod nu pot fi eliminate folosind remove_action () sau remove_filter () , așa că aveți grijă!
add_action („unde_pentru_fă_ceva”, funcție () {
ecou „Lucrul s-a făcut.”;
}, 10, 1);
- Consultați celelalte funcții disponibile legate de cârlig, cum ar fi did_action () sau has_action () . Nu știi niciodată când va fi utilă doar conștientizarea lor.
rezumat
Folosirea cârligelor este o chestiune de obișnuință. Încercați să vă puneți două întrebări simple oricând lucrați la proiectul dvs. WP:
- „Există un cârlig care să-mi ușureze acest lucru?”
- „Pot adăuga un cârlig care să ușureze acest lucru pentru viitorul meu?”
Odată ce abordați dezvoltarea WP cu această atitudine, veți găsi multe uși care se deschid.
Exemplele din acest ghid sunt vârful aisbergului. Există sute de cârlige doar în nucleul WP, ca să nu spun nimic despre biblioteca masivă de pluginuri și teme. Aruncați o privire la referința de acțiune WP și referința filtrului pentru lista completă a cârligelor WP de bază.
Dacă aveți nevoie de ajutor pentru dezvoltarea dvs. web, nu ezitați să ne contactați.
