Blog

WordPress Hook-ovi

Ovo je verovatno prvi tekst napisan o hook-ovima u WordPressu na srpskom jeziku. O hook-ovima se obično govori samo među hardcore WP programerima koji ih drže u malom prstu i koji uz pomoć njih od WordPressa stvaraju moćnu platformu sa mnoštvom mogućnosti. Hook-ovi omogućavaju developerima da sopstveni kod implementiraju u WordPress-ov core, u teme i pluginove. U daljem delu teksta otkrićemo šta predstavljaju hook-ovi, različite tipove hook-ova i videćemo neke od njih u praktičnim primerima.

Definicija Hook-a

Hook predstavlja generički pojam u WordPressu. On podrazumeva dodavanje sopstvenog koda ili menjanje akcije samog WordPressa i onoga što on izbacuje kao podrazumevanu vrednost.

Postoje dve vrste hook-ova u WordPressu: Actions (akcije) i Filters (filteri).

Action u WordPress-u predstavlja hook koji se pokreće u npr. tačno određeno vreme i preduzima određenu akciju. Ovo se na primer odnosi na situaciju kada WordPress inicijalizuje i šalje tweet u trenutku kada neko objavi post.

Filter omogućava da se menjaju podaci u WordPressu pre nego što su poslati u bazu podataka ili u browser. Neki od primera filtera predstavljaju situacije kako će se prikazivati excerpt (npr. rezultati pretrage ili mesečna arhiva) ili dodavanje nekog custom koda na kraju blog posta.

Posle nekoliko redova koje sam napisao u prethodnom delu teksta sigurno vam je malo konfuzno da shvatite razliku između akcija i filtera. Glavna razlika je u tome da kada radite sa filterom vi dobijate neki podatak (data) i da nakon toga na kraju vaše funkcije, vraćate taj podatak nazad. Kod akcija vi ne primate i ne menjate podatke, već jednostavno u tzv. runtime-u WordPressa u nekom trenutku izvršavate svoj kod.

Kako da dodate ili uklonite sopstvenu funkciju

Pre svega ako želite hook-ove u svojim funkcijama, način na koji ćete to uraditi je prilično jednostavan. Za actions (akcije) morate znati naziv hook-a kao i kada se tačno izvršava. Za filters (filtere) takođe treba znati naziv hook-a ali takođe želite da znate i vrednost koju ćete dobiti kada se vrati. Na kraju potrebno vam je i ime funkcije gde imate sav svoj kod.

Hook – Action

Potrebni parametri za add_action funkciju su hook i funkcija. Priority je opciona vrednost zasnovana na skali od 1 do 999 koja određuje prioritet funkcije koja je vezana za hook. Viši priority znači da teče kasnije a niži da teče ranije. Posledni parametar u funkciji se koristi retko i to u situacijama kada je potrebno da prođe ili se prihvati više argumenata.

Hook – Filter

Potrebni parametri za add_filter funkciju su hook i funkcija. Međutim, trebate biti pažljivi iz razloga što ponekad hook postoji kao akcija i filter ili filter i funkcija.

Za filtere, $function_to_add primaju i vraćaju vrednost na kraju funkcije. Akcije, na drugi način, jednostavno pokreću kod koji im je potreban pritom ne vraćajući vrednosti.

Kako prekinuti hook-ovanje (unhook)

Ukloniti hook je prilično jednostavno. Treba koristiti funkciju remove_action ili remove_filter zajedno sa imenom hook-a, funkcije i prioriteta.

Pošto smo se upoznali sa teorijskim odrednicama hook-ova došao je trenutak da se upoznamo sa praktičnim primerima u realnim situacijama i da vidimo nekoliko hook-ova u akciji.

Primeri WordPress hook-ova u akciji

Kada smo kod broja hook-a u WordPressu ima ih više od 200. Evo nekih primera:

U napred navedenom primeru možete videti funkciju register_my_custom_menu_page() koja je hook-ovana u admin menu. Ona omogućava pokretanje koda kada se i admin meni generiše. Ovaj hook se obično koristi kada se dodaje custom meni za plugin ili temu.

 

U ovom primeru koristimo excerpt_length filter, koji nam daje ceo broj (integer) a koji određuje dužinu the_excerpt(); funkcije.

 

Kao što vidimo ove imamo hook publish_post koji se pokreće kada je blog post objavljen. Možete koristiti ovaj primer koda kada želite da pošaljete twitt sa informacijom u vezi objavljenog posta.

 

Kreiranje widgeta je veoma prosta i svakodnevna akcija. Kada se uradi, mora se samo hook-ovati u widget_init akciju. Ova akcija vam pomaže da dodate sopstveni kod kada je widget generisan sa WordPressom.

 

Kada uđete u svet WordPress developmenta ovo je jedan od hook-va koji se podrazumevaju da znate i primenjujete. On omogućava generisanje URL-ova stylesheet-ova i JS fajlova u frontend delu vaše teme. Ovo je svakako elegantniji način da uradite nego da to činite na način tako što ćete kodirati linkove u headeru teme.

Rezime

Ovim tekstom smo samo zagrebali površinu hook-ova koje poseduje WordPress. Ako želite da naučite hook-ove u WordPressu onda morate da uprljate ruke i krenete sa napornim radom koji će vam doneti bogate rezultate.

Ovaj tekst predstavlja sjajnu odskočnu dasku u svet WP developmenta a na internetu možete pronaći jako bogate resurse koji će vam omogućiti da savladate ovu neverovatnu komponentu WordPressa.

Tehnička podrška ovog teksta pripala je Milanu Ivanoviću

About the author

dezareo

Piše o WordPress-u. Podstiče na akciju, deli ideje i motiviše ljude. U slobodno vreme trči, vozi bicikl, skija. Netaletnovan ali tvrdoglav gitarista.

Add Comment

Click here to post a comment

Leave a Reply

@WPSerbia

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 103 other subscribers

%d bloggers like this: