WordPress Hooks: Ghidul esențial

Publicat: 2021-01-26

Cârligele WordPress sunt un instrument util conceput pentru dezvoltatorii care realizează pluginuri și teme WordPress. De fapt, sunt atât de utile încât creatorii de WordPress le utilizează în întreaga bază WordPress. Dar ce anume sunt cârligele WordPress și cum le folosești?

În acest ghid, vom arunca o privire asupra modului de utilizare eficientă a cârligelor WordPress și de scufundare în elementele fundamentale. Hai să ne scufundăm!

În acest ghid

    Ce sunt Hooks în WordPress?

    Pe scurt, cârligele WordPress sunt fragmente de cod WordPress care captează și execută fragmente din alte bucăți de cod WordPress. Acestea permit în esență dezvoltatorilor să sară printre diferite fișiere cu ușurință în temele și pluginurile lor.

    Cârligele WordPress sunt ambalate în nucleul WordPress. Fiecare temă și plugin le folosește, de asemenea.

    WordPress Hooks Explained

    Scopul principal al cârligelor din WordPress este de a permite dezvoltatorilor să schimbe fundamental modul în care funcționează sistemul de gestionare a conținutului fără a modifica fișierele de bază ale WordPress. Deoarece WordPress este open-source, ai putea să te încurci cu fișierele de bază, dar există șanse de 99% să regreți în câteva minute.

    Deși poate fi puțin dificil de înțeles pentru dezvoltatorii mai noi, este absolut esențial să aflați cum funcționează cârligele WordPress. De cele mai multe ori, confuzia apare din cauza terminologiei pe care o folosește WordPress. Deși acțiunea din culise este destul de similară cu cea a multor limbaje de programare, verbul este diferit. Este adesea cel mai ușor să înveți cum să le creezi și să le folosești urmând mai întâi exemple, citind despre ele și apoi practicând.

    Pentru a scrie cârlige WordPress, va trebui să puteți codifica în PHP. PHP este limbajul de bază pentru marea majoritate a WordPress. Vă puteți gândi la cârlige ca la deschideri pe care alte funcții PHP le pot prinde. De asemenea, vă puteți gândi la cârligele WordPress ca la apeluri de apel care fac ceva la date sau la afișare înainte ca utilizatorul să vadă datele.

    Cârlige WordPress

    Două tipuri de cârlige WordPress

    Există două tipuri majore de cârlige WordPress pe care trebuie să le învățați:

    • Cârlige de acțiune WordPress
    • Cârlige de filtrare WordPress

    Să aruncăm o privire asupra acestor două tipuri de cârlige WordPress și a diferenței dintre acestea. De asemenea, vom explora câteva exemple atât de cârlige de acțiune, cât și de cârlige de filtrare pentru a ilustra mai bine utilizarea lor.

    Diferența dintre cârligele de acțiune WordPress și cârligele filtrante

    Dacă ați petrecut timp examinând codul WordPress, probabil că ați văzut acești termeni aruncați întâmplător. Din păcate, unul dintre punctele slabe ale codexului este că este scris de dezvoltatorii înșiși. Ca efect secundar, unele distincții importante care pot fi evidente pentru ei, nu sunt evidente pentru cei care nu sunt la fel de familiarizați cu codul de bază WordPress.

    Cel mai simplu mod de a face diferența între cele două tipuri de cârlige WordPress este că cârligele de acțiune nu returnează valori, în timp ce cârligele de filtrare returnează valori.

    Pentru cei familiarizați cu limbaje de programare obișnuite, este ca și cum ați spune că cârligele de acțiune au un tip de returnare „nul”, în timp ce cârligele de filtrare returnează date reale.

    Cârligele de filtrare pot fi considerate ca fiind cârlige de pre-procesare sau evenimente. Un cârlig de filtrare poate filtra rezultatele returnate dintr-o interogare a bazei de date pentru a conține numai intrări cu numele de familie „Smith”. Acest cârlig de filtrare ar trebui să fie apelat înainte de apelarea efectivă a interogării bazei de date, spunându-i WordPress în avans că va trebui să scoată rezultate irelevante înainte de a le returna.

    Cârligele ction WordPress pot fi considerate că recuperează ceva prin cod. Un exemplu obișnuit de cârlig de acțiune este inserarea unui fișier CSS suplimentar pe o pagină de site pentru a face să apară diferit. Amintiți-vă, cârligele modifică modul în care sunt afișate datele înainte de a fi livrate chiar utilizatorului. Un cârlig de acțiune oferă un nou fișier CSS care îmbunătățește experiența utilizatorului. Acest proces nu implică editarea nucleului WordPress și nici nu necesită editarea rădăcinii web de bază a site-ului. În acest fel, cârligele WordPress pot face mult mai ușor, împreună cu pluginurile, gestionarea mai multor site-uri WordPress.

    Cârlige și filtre explicate

    Acum că ne-am uitat la o imagine de ansamblu mai abstractă a cârligelor și filtrelor WordPress, să ne aruncăm în detaliile mai tehnice despre modul în care acestea funcționează.

    Vă puteți gândi la un cârlig WordPress ca la un eveniment care are loc cu un nume. Un exemplu de unul conținut în nucleul WordPress se numește save_post . Cu cârligele, spunem în esență că atunci când se execută save_post , vrem ca cârligul sau filtrul nostru să se atașeze și să ruleze alături de el.

    Atașăm ceea ce se numește apeluri de apel sau funcții de apel de apel, la cârlige în WordPress. Acesta este doar un mod fantezist de a spune că îi cerem lui WordPress să ruleze codul conținut în funcțiile pe care le-am creat atunci când este declanșat evenimentul pe care l-am „agățat” (cum ar fi save_post în exemplul nostru de mai sus).

    Deși este suficient de ușor să adăugați cârlige WordPress, așa cum vom explora mai târziu, amintiți-vă că un apel invers scris necorespunzător vă poate ruina complet lanțul de apeluri inversă. Dacă se întâmplă acest lucru, o verigă întreruptă în lanțul de apeluri inversate vă poate ruina complet toată munca grea! Faceți întotdeauna o copie de rezervă înainte de a efectua modificări. Profitați de un plugin de rezervă WordPress de încredere înainte de a face modificări.

    Vă interesează detalii și mai tehnice din spatele modului în care funcționează cârligele? Consultați următoarea secțiune! Avem o explicație mai detaliată, precum și un tutorial despre crearea primului cârlig de acțiune și a primului cârlig de filtrare!

    Cum funcționează Hooks în WordPress?

    Amintiți-vă, deși există câteva diferențe, cârligele de acțiune și cârligele de filtrare din WordPress pot fi văzute în mare parte la fel. Să trecem pe scurt cum funcționează aceste cârlige. Vom trece peste un exemplu și un tutorial mai târziu în articol.

    Ambele tipuri de cârlige trebuie înregistrate la WordPress înainte de a le utiliza. Aceasta oferă CMS lista funcțiilor pe care trebuie să le atașați atunci când există un eveniment la care ne-am „agățat” codul. De asemenea, asigurați-vă că acțiunile sunt înregistrate ca acțiuni și că filtrele sunt înregistrate ca filtre.

    Când adăugați o acțiune, profitați de funcția de bază WordPress add_action () . Când adăugați filtre, utilizați funcția de bază WordPress corespunzătoare numită add_filter () . Dacă apelurile dvs. de apel (funcționează în lanț atunci când evenimentul sau acțiunea dvs. este rulată) nu returnează date, trebuie să le înregistrați ca acțiune. Dacă returnează ceea ce WordPress se referă la date filtrabile, atunci înregistrați-le ca filtru.

    Orice specificați în aceste funcții este rulat atunci când site-ul dvs. este deschis de un utilizator. WordPress are un generator intern care pune toate aceste acțiuni și filtre împreună pentru noi. Există, de asemenea, funcții de eliminare corespunzătoare pentru acțiuni și filtre. Acestea pot fi utilizate pentru a elimina o funcție din lanțul dvs. de apel invers. Acestea sunt adesea conținute în declarații condiționate în WordPress PHP.

    La fel ca funcțiile noastre de adăugare, se numesc remove_action () și remove_filter () .

    Cum creez un cârlig în WordPress?

    A sosit în sfârșit momentul să facem primul nostru cârlig în WordPress! Amintiți-vă că crearea cârligelor implică adăugarea unui cod personalizat care va fi afișat și redat utilizatorilor site-ului nostru.

    Rețineți că de fiecare dată când adăugăm cod personalizat, adăugăm un anumit nivel de risc pentru securitate. De aceea, acum ar fi un moment ideal pentru a vă asigura că aveți un plugin de securitate WordPress în care puteți avea încredere instalat și gata de utilizare. Acest lucru vă poate ajuta cu liniște sufletească și poate ameliora orice potențiale amenințări la adresa site-ului dvs. prin intermediul codului personalizat care ar putea introduce noi vulnerabilități.

    Obțineți conținutul bonus: un ghid pentru securitatea WordPress
    Click aici

    Să aruncăm o privire la modul în care putem crea un cârlig de acțiune foarte simplu în WordPress. Apoi vom analiza un exemplu de cârlig de filtrare în CMS.

    Cum creez un cârlig de acțiune în WordPress?

    Pentru exemplul nostru de acțiune, să facem ceva ce aproape toți dezvoltatorii WordPress vor trebui să facă la un moment dat: reglați conținutul de pe pagina de autentificare WordPress. Pagina este foarte generică.

    De exemplu, dacă gestionați un site WordPress pentru o instituție academică, s-ar putea să vă ceară să le reamintiți studenților să folosească adresa de e-mail a campusului pentru a se conecta la portalul lor WordPress. Am putea adăuga un memento simplu sub casetele „Nume utilizator” și „Parolă” pe care scrie „ Nu uitați să utilizați e-mailul @ myuniversity.edu ca nume de utilizator ” pentru a reduce apelurile către departamentul IT care solicită ajutor pentru conectare.

    Acest lucru, desigur, ar fi mai mult aliniat cu un cârlig de acțiune decât cu un cârlig de filtrare. Acest lucru se datorează faptului că o simplă ajustare, cum ar fi editarea textului pe pagina principală de conectare a utilizatorului, nu returnează de fapt niciun fel de date de filtrat.

    În primul rând, va trebui să ne dăm seama unde anume să ne conectăm la acțiune. În majoritatea cazurilor, examinarea fișierului PHP în care doriți să adăugați conținut poate fi foarte inteligentă. Aruncând o privire asupra fișierului WordPress care conține conținutul de conectare, există mai multe declanșatoare de acțiuni. În exemplul nostru de reamintire adresată studenților de a-și folosi e-mailurile instituționale, veți observa următorul cod destul de interesant în fișierul PHP al paginii de autentificare:

     do_action ('login_footer');

    Funcția do_action este o funcție de bază WordPress care efectuează acțiunea noastră la cerere. Desigur, acest lucru este oferit dacă am înregistrat toate funcțiile pe care dorim să le atașăm acestui cârlig.

    În acest caz, „login_footer” este un cârlig premat de echipa WordPress. Deși este încorporat, totuși îi putem atașa propriul cod. În mod implicit, acest cârlig încarcă conținutul de subsol al paginii de conectare generice. Subsolul ar fi un loc ideal pentru textul nostru, motiv pentru care profităm de această secțiune de pagină.

    Putem adăuga o nouă funcție PHP la wp-login.php pentru a începe. Tot ce trebuie să facem este să afișăm o linie de text, astfel:

     funcție add_uni_email_reminder () {
    
    <p> Nu uitați să utilizați adresa de e-mail @ myuniversity.edu ca nume de utilizator! </ p>
    
    }
    
    do_action ('login_footer', 'add_uni_email_reminder');

    În acest caz, am creat pur și simplu o nouă „acțiune” în fișierul wp-login.php . Numele funcției cârligului de acțiune (add_uni_email_reminder), fără paranteze parametru, poate fi adăugat la lista de parametri do_action () pentru a-l înregistra pentru a fi rulat atunci când subsolul este redat în continuare.

    Cum creez un cârlig de filtrare în WordPress?

    Acum suntem pe rol! Am învățat elementele de bază ale cârligelor WordPress și cum să le valorificăm puterea. Am efectuat chiar și noi o mică modificare! Singura parte importantă rămasă este să exersezi cu cârlige de filtrare. Amintiți-vă, acestea sunt cârlige care returnează un anumit tip de date pe care le putem filtra. Acestea sunt un pic mai complexe decât cârligele de acțiune, dar acum că înțelegeți elementele de bază ale cârligelor, ar trebui să fie puțin mai ușor.

    Să începem cu cârligul nostru de filtrare WordPress. Mai întâi, va trebui să decidem ce filtru specific dorim să adăugăm. Un element pe care clientul dvs. l-ar putea solicita este personalizarea funcționalității de adăugare a paginii. Aici utilizatorii WordPress pot adăuga noi postări de blog. Pentru a-l menține cât mai simplu posibil, să spunem că vrem să edităm textul „Introduceți titlul aici” conținut în caseta de text „Titlu”. Să presupunem că dorim să îl facem mai specific și să-i spunem „Introduceți titlul postării pe blog”.

    Observați că, în exemplul nostru de cârlig de filtrare de mai jos, funcția noastră are un parametru. În plus, execuția efectivă a filtrului nostru are un parametru suplimentar de „prioritate”. Veți observa, de asemenea, că funcția reală pe care o folosim pentru a înregistra cârligul nostru este exact aceeași cu exemplul nostru de „acțiune”, add_action . Modul în care putem spune că această funcție este mai degrabă un cârlig de filtrare decât un cârlig de acțiune este că atunci când este executată efectiv, funcția executată așa cum putem vedea în codul de bază WordPress este apply_filters ('enter_title_here', __ ('Introduceți titlul aici') ), $ post); . Aplicăm filtre așa cum sugerează puternic numele funcției.

    Acesta este adesea un punct de declanșare pentru utilizatorii mai noi. Este într-adevăr doar o problemă de formulare ușoară; odată ce treci de asta, descifrarea diferenței dintre cârlige și filtre în WordPress devine destul de simplă! Fără alte adiții, să ne scufundăm în schimbarea textului substituent!

     funcționează_nou_titlu_aici ($ title) {
    
    $ title = __ („Introduceți titlul postării pe blog”, „text-domain”);
    
    returnează $ titlu;
    
    }
    
    add_action ('enter_title_here', 'our_new_title_here', 10);

    Este posibil să vă întrebați ce înseamnă „10” în funcția noastră add_action . Sperăm că înțelegeți primii doi parametri; primul este cârligul WordPress implicit, iar al doilea este numele funcției și filtrului pe care îl atașăm la enter_title_here . „10” este nivelul de prioritate pe care îl atribuim acestui filtru.

    Amintiți-vă, atât acțiunile, cât și filtrele din WordPress sunt o serie de „apeluri” în cascadă sau funcții personalizate care sunt rulate. Acestora li se acordă diferite niveluri de prioritate. Vom explora ce înseamnă diferitele numere, care sunt parametrii acceptabili etc., un pic mai târziu. Cu toate acestea, este important să înțelegem că 10 este nivelul de prioritate „normal” implicit al WordPress pentru filtre și acțiuni deocamdată.

    Unde sunt stocate cârligele WordPress?

    Este posibil să vă întrebați unde WordPress ar putea stoca toate aceste acțiuni și filtre. Am făcut referință la nucleul WordPress, dar aceasta este pur și simplu locația acțiunilor și filtrelor încorporate și a funcțiilor atașate acestora. Utilizatorii experimentați de WordPress știu probabil că aceste cârlige nu sunt stocate în nicio bază de date creată atunci când este instalat WordPress.

    Una dintre cele mai unice caracteristici ale acțiunilor și filtrelor din WordPress este că acestea nu sunt „stocate” nicăieri! După ce am adăugat o acțiune sau un filtru, acțiunea sau filtrul pot fi accesate la nivel global pe site-ul nostru WordPress. Dacă credeți că nu există nicio modalitate posibilă de stocare nicăieri , aveți dreptate!

    Deși structura este destul de complexă, există o variabilă PHP în care sunt stocate toate acțiunile și filtrele noastre. Această variabilă este globală și se numește $ wp_filter . Nu vă încurcați direct cu această variabilă!

    Pentru cei interesați de detaliile tehnice, această variabilă $ wp_filter este o matrice PHP. Deține o serie mare de obiecte de tipul WP_HOOK . În fișierul PHP puteți citi în wp-includes / class-wp-hook.php , există o metodă importantă: this-> apply_filters () . Această metodă este cea care declanșează toate apelurile noastre de apel și „înregistrează” filtrele și cârligele noastre personalizate. Este în esență pâinea și untul cârligelor WordPress.

    Pentru a profita din plin de această caracteristică minunată a WordPress, va trebui să cunoaștem unele dintre cele mai frecvente hoook-uri WordPress. Nu căutați mai departe decât foaia de trucuri de mai jos!

    Lista WordPress Hooks: Foaie de trucuri WordPress Hooks

    Să începem cu o mică doză de realism: nu există nicio modalitate posibilă de a trece peste fiecare cârlig din WordPress. Din fericire, unii cercetători au compilat o listă cu (literalmente) fiecare acțiune și filtru, pentru cei care sunt curioși. Puteți vedea aici o listă completă a tuturor cârligelor WordPress, dar aveți grijă să vă uitați la avertismentele de securitate referitoare la fiecare cârlig. Nu trebuie să utilizați niciunul care este etichetat ca „depreciat”. Aceasta înseamnă că pot fi sau nu acceptate în cea mai modernă versiune de WordPress, dar în orice caz, în curând nu vor fi acceptate.

    După toate probabilitățile, 90% din timp, veți fi interesați doar de câteva cârlige WordPress. Iată cinci dintre cele mai populare acțiuni și filtre din WordPress, împreună cu o scurtă explicație a ceea ce sunt!

    1. add_setting () - Așa cum sugerează și numele, această acțiune se adaugă la setările dvs. WordPress. Probabil că nu veți dori să includeți această acțiune în nicio pagină orientată către utilizator, dar poate fi un salvator dacă modificați paginile administrative.
    2. apply_filters () - Acesta pare familiar? Ar trebui, pentru că l-am folosit mai devreme! Acest lucru apelează imediat întregul nostru lanț de apeluri asociate cu un cârlig.
    3. esc_attr () - Numele acestuia este prescurtat pentru „scapă de atribute HTML”. Scăparea HTML înseamnă că folosim coduri ASCII pentru simbolurile HTML. Acest lucru este folosit aproape universal pentru „igienizarea intrărilor” paginilor. Cu alte cuvinte, această acțiune ar fi extrem de dorită să fie atașată la un cârlig executat atunci când un utilizator trimite un formular. Împiedică utilizatorii să vă atace site-ul cu atacuri de scripturi între site-uri, în special.
    4. the_content () - Numele acestui cârlig probabil sună simplu, pentru că este! Pur și simplu captează conținutul postării curente vizualizate. Acest lucru este ideal dacă permiteți utilizatorilor să exporte conținutul unei postări. De exemplu, unele site-uri oferă utilizatorilor Premium posibilitatea de a exporta orice articol ca fișier PDF.
    5. wp_nav_menu () - Stenografie pentru „Meniul de navigare WordPress”, acest cârlig este un cârlig de acțiune. Este folosit pentru a afișa pur și simplu meniul principal de navigare pe care îl creați atunci când vă creați prima dată site-ul WordPress. Acest lucru este minunat dacă aveți pagini care au un aspect semnificativ diferit și doriți să afișați meniul într-o zonă alternativă.

    În ce ordine rulează WordPress Hooks? Secvența de declanșare WordPress Hooks

    Din păcate, ordinea exactă pe care o rulează cârligele WordPress nu este atât de evidentă pe cât ți-ai putea imagina. Acest lucru se datorează volumului mare de cârlige. Un cercetător a efectuat o analiză avansată a acestui lucru pentru a număra numărul de cârlige care rulează și ordinea în care au fost rulate atunci când a fost vizitată pagina de pornire a unui site WordPress.

    Ca și cum acest lucru nu ar fi fost suficient de complex, unele cârlige WordPress au cârlige atașate de diferite priorități! Puteți arunca o privire asupra sutelor de cârlige rulate și a comenzilor acestora în această postare despre secvența de lansare a cârligelor WordPress. Rețineți: nu ar trebui să încercați să rulați această analiză pe altceva decât pe un server de test în care vă puteți permite să pierdeți totul!

    Deși nu putem face prea multe despre ordinea cârligelor implicite, putem face ceva în legătură cu ordinea cârligelor pe care le specificăm. Aici intervine prioritatea cârligelor. Am făcut aluzie la asta mai devreme.

    Cum funcționează prioritatea în cârligele WordPress?

    După cum am menționat, nivelul de prioritate implicit atribuit unui cârlig de WordPress este „10”. Orice ați decide să faceți prioritatea, amintiți-vă că valoarea trebuie să fie un număr întreg pozitiv. Aceasta înseamnă că, din păcate, „0” nu este o valoare validă. De asemenea, -100 nu ar fi valid și 0,5 nu ar fi valid. Totuși, 1 ar funcționa, la fel ca și 1111.

    În general, cu cât este mai mic întregul, cu atât este mai mică prioritatea. Dacă doriți ca un cârlig să ruleze după un cârlig, ați atribuit valoarea implicită 10, de exemplu, ați putea face prioritatea sa 9. Cârligul dvs. cu cea mai mică prioritate poate primi 1. În plus, cârligele WordPress pot fi atribuite la fel prioritate. Asta dacă nu vă pasă în ce ordine se execută.

    Înfășurarea: Cârlige în WordPress

    Unul dintre cele mai mari obstacole pentru noii dezvoltatori WordPress este cât de nestandardizate pot fi multe dintre aceste informații. Deși veți găsi o mulțime de bloguri tehnice, multe acoperă subiecte înguste și pot fi dificil de agregat.

    Cel mai bun mod este să începeți experimentarea cu cârlige de acțiune WordPress și cârlige de filtrare pe site-ul dvs. Odată ce ați creat cârlige WordPress mai complexe, va trebui să învățați cârligele pe care aveți tendința de a le folosi mai des. În timp, veți memora aceste cârlige. Este un proces dificil și nimeni nu este capabil să memoreze fiecare dintre aceste cârlige.

    Codex-ul WordPress este cea mai bună resursă pe care o puteți folosi în călătoria dvs. pentru a fi următorul dezvoltator de top WordPress din lume.

    Cârlige WordPress