Hvis du skal lage et WordPress-innstikk eller ha spesielle temafunksjoner, enten for bare deg selv eller for almenheten, så bør du ha et forhold til WordPress’ filter og action hooks.

Disse lar deg enten legge til eller erstatte noe i f.eks. et WordPress tema, via php-funksjoner.

Det finnes forferdelig mange av disse filter og action hookene, så denne artikkelen vil bare ta for seg det mest grunnleggende med noen enkle eksempler.

Action hooks

Action hooks lar deg legge til noe i WordPress. Og de kjennertegnes med koden

do_action('navn')

, så hvis du finner noe slikt i et tema, så betyr at du kan legge til noe med en php-funksjon.

Du må da huke (eng. hook up) denne funksjonen mot

add_action('navn','min_funksjon');

Et godt eksempel på action hooks er temakoden wp_head() som bør ligge i alle temaers <head>-element.

Denne lar deg rett og slett legge til ekstra elementer i <head>; og dette kan være javascript, css koder, meta elementer.

Men i dette eksempelet skal vi bruke en global css fil (global.css) som eksempel:

function global_css() {
$global_css = '&lt;link type=&quot;text/css&quot; href=&quot;http://minside.tld/global.css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot; /&gt;';
echo $global_css;
}
add_action('wp_head', 'global_css');

funksjonen global_css() viser hvilken html-kode som skal brukes for å vise global.css, og ved å bruke add_action(‘wp_head’, ‘global_css’); vil denne html-koden automagisk bli lagt til i headeren av temaet ditt.

Filter hooks

Filter hooks lar deg i utgangspunktet erstatte hva som allerede vises med noe annet, og kjennetegnes med

apply_filters('navn', $variabel);

eller

apply_filters('navn', 'funksjon');

Også her bruker du en php-funksjon for ønsket effekt, og siden bruker add_filter(‘navn’,'min_funksjon’); for å oppnå ønsket effekt.

Et eksempel på hvordan du kan bruke filter hooks er å ha din helt egen comments.php-fil som vil bli brukt uansett hvilket tema du har på siden din (dette kan være veldig greit hvis du har redigert comment.php opp og i mente for å gi støtte for innstikk):

function my_comments_template() {
$file = ABSPATH . '/comments.php':
return $file;
}
add_filter('comments_template','my_comments_template');

Her forteller funksjonen hvor din egen comments.php ligger, og med add_filter(‘comments_template’,'my_comments_template’); forteller du WordPress at uansett hvilket tema, så skal din comments.php fil brukes til å vise kommentarer.

Det som er viktig med filter hooks er return-biten i funksjonen din. Når du skal bruke filtrer, så må du benytte deg av return $min_variabel; (echo $min_variabel; og print $min_variabel kan også brukes.

Men filter kan faktisk også brukes til å legge til noe, siden WordPress har endel globale variabler.

$content er en slik variabel og kan brukes mot filtering av the_content (visning av innhold):

function my_stuff($content) {
$my_stuff = 'Hallo, hallo!';

return $content . $mystuff;
}
add_filter('the_content', 'mystuff');

Det som er viktig her er hvor variablen $content er plassert i forhold til $mystuff. I dette eksempelet vil teksten «Hallo, hallo!» stå etter selve posten eller siden.

Hvis jeg bytter om til $mystuff . $content så vil «Hallo, hallo!» stå helt øverst i en post eller side.

Fjerning av filter eller action

Det er også mulig å fjerne et filter eller en action som et tema eller innstikk lager. Dette gjøres med kodene:

remove_filter('navn', 'funksjon');
remove_action('navn', 'funksjon');

Hvis du f.eks. skal lage et Dattertema av WordPress Default, kan det være hensiktsmessig å fjerne muligheten til å velge farge på headeren, siden du kanskje heller skal bruke et bakgrunnsbilde.

Da må vi ta en titt i functions.php fila til WordPress Default, og lete opp instanser av

add_action('navn','funksjon');

> eller

add_filter('navn','funksjon');

som kan ha noe med dette å gjøre.

Etter en liten gjennomgang av functions.php så tør jeg gjette på at kodene

add_action('wp_head', 'kubrick_head');

og

add_action('admin_menu', 'kubrick_add_theme_page');

har noe med dette å gjøre, så da kan jeg sette inn følgende kode inn i Dattertemaets functions.php fil:

&lt;?php
remove_action('wp_head', 'kubrick_head');
remove_action('admin_menu', 'kubrick_add_theme_page');
?&gt;

Etterord

Dette er som skrevet innledningsvis bare veldig grunnleggende med veldig enkle eksempler, men hvis du lager innstikk så må du nesten kunne dette.

Og hvis du redigerer temaer, bør du også ha et forhold til dette, siden mange temaer kommer med siden egne filtrer eller action hooks du kan leke med.

Relaterte lenker