Preskoči na vsebino
BeoHosting
BeoHosting
WordPress

Vodnik za WordPress hooks: actions in filters

BeoHosting Ekipa··10 min branja branja
Vodnik za WordPress hooks: actions in filters

Kaj so WordPress hook-i

Sistem WordPress hook-ov je temelj, ki omogoča razširjanje in spreminjanje sistema WordPress brez neposrednega spreminjanja izvorne kode. Hook-i so točke v kodi WordPressa, kamor lahko zakačite svoje funkcije, ki se bodo izvedle v določenem trenutku ali pa bodo spremenile podatke, ki potujejo skozi sistem. Brez hook-ov bi vsaka prilagoditev zahtevala neposredno spreminjanje datotek jedra WordPressa, ki bi se izgubilo ob vsaki posodobitvi.

Obstajata dve vrsti hook-ov - actions (akcije) in filters (filtri). Actions vam omogočajo, da izvedete kodo v določenem trenutku življenjskega cikla WordPressa, medtem ko filters omogočajo spreminjanje podatkov, preden so prikazani ali shranjeni. Razumevanje teh dveh konceptov je ključno za vsakega WordPress razvijalca, saj sta temelj za ustvarjanje tem, vtičnikov in prilagojenih funkcionalnosti.

Actions - izvajanje kode v pravem trenutku

Kako delujejo actions

Action hook je mesto v kodi WordPressa, kjer je nameščen klic funkcije do_action. Ko WordPress med izvajanjem pride do tega mesta, preveri, ali obstajajo funkcije, zakačene na ta hook, in jih izvede po vrsti glede na prioriteto. Na primer, action wp_head se sproži znotraj značke head vsake strani, wp_footer pred zaprtjem značke body, init pa na začetku vsakega nalaganja WordPressa, potem ko so naloženi vsi vtičniki.

Uporaba add_action

Funkcija add_action sprejme štiri parametre - ime hook-a, callback funkcijo, prioriteto in število argumentov. Prioriteta določa vrstni red izvajanja, kadar je na isti hook zakačenih več funkcij, s privzeto vrednostjo 10, pri čemer nižja številka pomeni zgodnejše izvajanje. Na primer, če želite v glavo strani dodati kodo Google Analytics, zakačite funkcijo na hook wp_head s prioriteto 1, da se izvede med prvimi. Če želite CSS dodati za vsemi vtičniki, uporabite prioriteto 99.

Najpogostejši action hook-i

  • init: Sproži se na začetku vsakega zahtevka, potem ko so naloženi vtičniki. Idealen za registracijo prilagojenih tipov vsebine, taksonomij in shortcode-ov.
  • wp_enqueue_scripts: Pravilen način za dodajanje CSS in JavaScript datotek na frontend. Uporablja funkciji wp_enqueue_style in wp_enqueue_script za upravljanje odvisnosti in izogibanje podvajanju.
  • admin_init: Sproži se na začetku vsake skrbniške strani. Uporabite ga za registracijo nastavitev vtičnika, preverjanje dovoljenj ali preusmeritve.
  • save_post: Sproži se, ko je objava shranjena ali posodobljena. Idealen za shranjevanje prilagojenih meta podatkov, validacijo vsebine ali pošiljanje obvestil.
  • wp_login in wp_logout: Sprožita se ob prijavi in odjavi uporabnika. Uporabite ju za beleženje aktivnosti, preusmeritve ali čiščenje predpomnilnika.
  • template_redirect: Sproži se pred nalaganjem predloge. Idealen za prilagojene preusmeritve ali preverjanje dostopa do strani.

Filters - spreminjanje podatkov

Kako delujejo filters

Filter hook deluje podobno kot action hook, vendar s ključno razliko - filter sprejme podatke, jih spremeni in vrne spremenjene podatke. WordPress uporablja funkcijo apply_filters, da podatke spusti skozi vse zakačene filter funkcije. Vsaka filter funkcija mora vrniti vrednost, sicer podatek postane prazen. Na primer, filter the_content spusti vsebino objave skozi vse zakačene funkcije pred prikazom, kar vtičnikom omogoča dodajanje gumbov za deljenje na družbenih omrežjih, sorodnih objav ali oglasov znotraj vsebine.

Uporaba add_filter

Funkcija add_filter ima enako skladnjo kot add_action - ime hook-a, callback funkcijo, prioriteto in število argumentov. Ključna razlika je v tem, da mora callback funkcija sprejeti vsaj en argument, ki predstavlja podatek za filtriranje, in mora vrniti spremenjen ali izvirni podatek. Če vaša filter funkcija ne vrne vrednosti, bo podatek izgubljen, kar lahko pokvari spletno mesto. Vedno preizkusite filter funkcije, da se prepričate, da vračajo pravilno vrednost tudi za robne primere.

Najpogostejši filter hook-i

  • the_content: Filtrira vsebino objave pred prikazom. Ta filter uporabljajo vtičniki za oblikovanje, shortcode-i in spremembe vsebine.
  • the_title: Filtrira naslov objave. Uporabite ga za dodajanje predpon, pripon ali programsko oblikovanje naslovov.
  • wp_mail: Filtrira parametre e-pošte pred pošiljanjem. Spremenite lahko prejemnike, zadevo, vsebino ali glave e-pošte.
  • login_redirect: Filtrira URL, na katerega je uporabnik preusmerjen po prijavi. Uporabite ga za prilagojene preusmeritve glede na vlogo uporabnika.
  • excerpt_length: Filtrira dolžino samodejno ustvarjenega izvlečka. Privzeta vrednost je 55 besed.
  • upload_mimes: Filtrira dovoljene tipe datotek za nalaganje. Uporabite ga za dodajanje podpore za SVG ali druge formate.

Ustvarjanje lastnih hook-ov

Lastni action hook-i

Ko razvijate vtičnik ali temo, ustvarjanje lastnih hook-ov drugim razvijalcem omogoča, da razširijo vašo funkcionalnost brez spreminjanja vaše kode. Postavite klice do_action na mesta, kjer želite omogočiti razširitve - na primer pred in po prikazu obrazca, pred shranjevanjem podatkov ali po obdelavi naročila. Hook-e poimenujte s predpono svojega vtičnika, da se izognete konfliktom z drugimi vtičniki, na primer mojvticnik_pre_save_data. Dokumentirajte razpoložljive hook-e z opisom, kdaj se sprožijo in katere argumente posredujejo.

Lastni filter hook-i

Uporabite apply_filters na mestih, kjer želite omogočiti spreminjanje podatkov. Na primer, če vaš vtičnik ustvari seznam elementov, spustite polje elementov skozi filter pred prikazom. Drugi razvijalci lahko zakačijo filter, da dodajo, odstranijo ali spremenijo elemente. Za vsak filter jasno dokumentirajte tip podatka, ki se filtrira, pričakovani format vrnjene vrednosti in kontekst, v katerem se filter uporablja. To naredi vaš vtičnik prijetno razširljiv in zmanjša potrebo po neposrednih spremembah.

Razvoj vtičnikov s hook-i

Struktura vtičnika

Vsak WordPress vtičnik se začne z header komentarjem, ki vsebuje ime vtičnika, opis, različico, avtorja in licenco. Glavna datoteka vtičnika običajno registrira hook-e v konstruktorju razreda ali v inicializacijski funkciji. Kodo organizirajte v razrede z metodami za vsako funkcionalnost in uporabite konstruktor za registracijo vseh hook-ov na enem mestu. To naredi kodo berljivo in lažjo za vzdrževanje, saj lahko vidite vse hook-e na enem mestu.

Aktivacija in deaktivacija

WordPress ponuja posebna hook-a register_activation_hook in register_deactivation_hook, ki se sprožita ob aktivaciji in deaktivaciji vtičnika. Aktivacijski hook uporabite za ustvarjanje tabel v podatkovni bazi, nastavitev privzetih možnosti in razporejanje cron opravil. Deaktivacijski hook uporabite za čiščenje razporejenih cron opravil in začasnih podatkov. Za popolno odstranitev podatkov ob brisanju vtičnika ustvarite datoteko uninstall.php, ki izbriše možnosti iz baze, prilagojene tabele in naložene datoteke.

Najboljše prakse

Vedno uporabljajte predpone za imena funkcij in razredov, da se izognete konfliktom z drugimi vtičniki. Pred registracijo preverite, ali hook obstaja, da se izognete napakam. Uporabite has_action in has_filter, da preverite, ali je nekdo že zakačen na določen hook. Hook-e odstranite z remove_action in remove_filter, kadar je treba spremeniti obnašanje drugega vtičnika ali teme. Prioriteta je ključna pri odstranjevanju - uporabiti morate enako prioriteto, kot je bila uporabljena pri dodajanju.

Razhroščevanje hook-ov

Orodja za razhroščevanje

Vtičnik Query Monitor je nepogrešljivo orodje za razhroščevanje hook-ov, ki prikaže vse registrirane hook-e, vrstni red izvajanja in čas, ki ga porabi vsak hook. Konstanta WP_DEBUG v datoteki wp-config.php omogoča prikaz PHP napak in opozoril, ki pomagajo pri odkrivanju težav s hook-i. Vtičnik Debug Bar doda ploščo v skrbniško vrstico z informacijami o hook-ih, poizvedbah v bazo in porabi pomnilnika. Za napredno razhroščevanje Xdebug z VS Code omogoča postavljanje prekinitvenih točk znotraj callback funkcij hook-ov.

Pogoste napake

Najpogostejša napaka je filter funkcija, ki ne vrne vrednosti, kar privede do prazne vsebine. Druga pogosta napaka je neusklajeno število argumentov med registracijo hook-a in callback funkcijo. Neskončna zanka nastane, ko filter spremeni podatek na način, ki ponovno sproži isti filter. Uporabite statično spremenljivko ali zastavico, da preprečite rekurzijo. Napačna prioriteta lahko povzroči, da vaša funkcija ne deluje, ker je prejšnji hook nepričakovano spremenil podatke. Na WordPress hosting paketih BeoHosting imamo optimizirano okolje za razvoj vtičnikov s podporo za orodja za razhroščevanje in dovolj PHP pomnilnika za kompleksne verige hook-ov.

Zaključek

Sistem WordPress hook-ov je močan in eleganten mehanizem, ki omogoča neskončno razširljivost WordPressa. Actions vam dajejo možnost izvajanja kode v pravem trenutku, medtem ko filters omogočajo spreminjanje podatkov na katerem koli mestu v sistemu. Razumevanje hook-ov je ključno za prehod z uporabnika na razvijalca in odpira vrata do ustvarjanja profesionalnih vtičnikov in tem. Začnite z najpogosteje uporabljenimi hook-i, eksperimentirajte s prilagajanjem in postopoma gradite kompleksnejše funkcionalnosti. Če šele nameščate WordPress, si oglejte naš vodnik za namestitev.

BeoHosting Ekipa

10+ let izkušenj — Strokovnjaki za spletno gostovanje in infrastrukturo

  • Web Hosting
  • WordPress Hosting
  • VPS
  • Dedicated Serveri
  • Domeni
  • SSL
  • cPanel
  • LiteSpeed
  • Linux administracija
  • DNS

Zadnja posodobitev: