Toimintakoukku on yksinkertainen. Jossain on tällainen:
do_action('tagi');
johon voi koukuttaa toimintoja näin:
add_action('tagi', 'funktio', prioriteetti);
jolloin tuo funktio ajetaan tuossa kohtaa. Jos on useita funktioita samassa koukussa, ne ajetaan prioriteettijärjestyksessä.
Hyvä esimerkki on vaikkapa toimintakoukku wp_head
, joka pitäisi löytyä jokaisesta teemasta <head>
-tagin sisältä ja jolla voi lisätä omaa koodia sivujen alkuun ilman että tarvitsee muokata itse sivupohjaa (eli koodit voi lisätä pluginista, jolloin ne pysyvät, vaikka teeman vaihtaisi).
Filtteri on muuten sama kuin toimintakoukku, mutta sillä voi muokata jotain arvoa.
apply_filters('tagi', 'arvo', lisäparametrejä...);
johon tarrataan
add_filter('tagi', 'funktio', prioriteetti, parametrien lukumäärä);
Minulla on esimerkiksi Relevanssi-pluginissa tällainen:
$wp_query = apply_filters('relevanssi_modify_wp_query', $wp_query);
Jos kehittäjän on tarpeen päästä muokkaamaan $wp_queryä juuri ennen kuin Relevanssi näkee sen, homma hoituu tuolla filtterillä.
Pre_option-filtterit ovat myös hyvä esimerkki, miten tehokasta tämä voi olla. Jokaisen asetuksen lukemisen yhteydessä ajetaan filtteri pre_option_(asetuksen nimi)
, jonka avulla asetuksen arvoa voi muuttaa lennossa tilannekohtaisesti.
Mitä enemmän pluginissa on filtterikutsuja, sitä joustavammin sen toimintaa pystyy säätelemään ulkopuolelta ilman että tarvitsee muokata itse lähdekoodia.