Hooks, Action & Filter i WordPress
En standard installation af WordPress er fyldt med en masse output du nødvendigvis ikke har behov for og nogle ting gør simpelthen bare dit fremtidige arbejde mere besværligt. WordPress benytter Hooks hvor man kan indlejre data i.
Disse hooks udnyttes både at WordPress selv, men også Plugins og Temaer. Via /wp-content/themes/dittema/functions.php fil kan man enten tilføje flere ting eller fjerne elementer man ikke skal bruge.
Functions.php er en del af dit tema og vi benytter denne for ikke at skulle rette i core filerne (derved bevare du dine rettelser, selvom du opdatere WP versionen)
Denne miniguide er blot for at give dig en ide om hvad man kan gøre – sørg for kun at benytte de ting du mener kan have gavn på din egen blog.
Jeg har en rimelig fast procedure med at fjerne en række ting fra bla. min wp_head(); hook vha. filter og action. Jeg fjerner både ting der irriterer mig, men også ting der kan reducere risikoen for hacking på min blog.
Generelt hvis du ser ting i dit HTML output du ikke ønsker skal være der og ikke umiddelbart kan finde i dine template filer, er det filter/actions du skal have fat i. (Samme gælder med plugins, hvis de indlejre noget HTML du ikke vil have, kan du med stor sandsynlighed fjerne det med en action via din functions.php.
Du kan her få lidt inspiration til de nogle af de link elementer og filtre jeg ofte ikke har behov for og jeg giver et eksempel af det output de hver laver inden de fjernes:
HUSK BACKUP af dine filer inden du laver rettelser direkte i dit tema.
Fjerner henvisning i <head> til kategori/tag feeds
Output eksempel:
<link rel=”alternate” type=”application/rss+xml” title=”kategorifeed” href=”/fisk/fiskehistorier/feed” />
remove_action( ‘wp_head’, ‘feed_links_extra’, 3);
Fjerner henvisninger til kommentar feeds
Output eksempel:
<link rel=”alternate” type=”application/rss+xml” title=”Kommentarfeed” href=”/min-forste-fisketur.html/feed” />
remove_action( ‘wp_head’, ‘feed_links’, 2 );
Fjerner Windows Live Writer manifest fil
Output eksempel:
<link rel=”wlwmanifest” type=”application/wlwmanifest+xml” href=”/wp-includes/wlwmanifest.xml” />
remove_action( ‘wp_head’, ‘wlwmanifest_link’ );
Fjerner link til forrige indlæg fra header.
Output eksempel:
<link rel=’prev’ title=’Kort – Kystfiskeri Sjælland’ href=’/kort-kystfiskeri-sjaelland.html’ />
remove_action( ‘wp_head’, ‘parent_post_rel_link’, 10, 0 );
Fjerner link til første indlæg på bloggen fra header.
Output eksempel:
<link rel=’start’ title=’Hej Verden!’ href=’/hej-verden.html’ />
remove_action( ‘wp_head’, ‘start_post_rel_link’, 10, 0 );
Fjerner link til næste indlæg fra header.
Output eksempel:
<link rel=’next’ title=’Min gedde fra Furesøen’ href=’/min-gedde-fra-furesoen.html’ />
remove_action( ‘wp_head’, ‘adjacent_posts_rel_link’, 10, 0 );
Fjerner henvisning til din WP version fra header.
Output eksempel:
<meta name=”generator” content=”WordPress 2.9.1″ />
remove_action( ‘wp_head’, ‘wp_generator’ );
Omskriver ikke dine specialtegn som ‘ og – i titlen
remove_filter(‘the_title’, ‘wptexturize’);
Omskriver ikke dine specialtegn som ‘ og – i selve indlægget.
remove_filter(‘the_content’, ‘wptexturize’);
Vil du benytte nogle af disse actions/filter kan du tilføje dem til din egen functions.php fil. Bare copy/paste den ind i slutningen af filen, lige før ?>
Lige så nemt som man kan fjerne ting fra sine hooks, kan man også tilføje ting. Men det er nok for meget at skrive om i denne lille guide.
Ressourcer:
Fin gennemgang – vil dog lige sige at man skal hold tungen lige i munden – har brugt 20 min. på en gl. blog og har fumlet lidt for meget rundt. Hurra for backup 🙂
Jeg er især glad for koden til at fjerne links til kommentardelen.
Hehe ja det er i den grad vigtigt at have backup – har lige for en god orden skyld smidt det ind med rødt i indlægget. 🙂
Tak for gennemgangen, Claus. Der er helt sikkert noget af det der, der skal implementeres, når jeg næste gang skal revidere lidt på bloggen.
@Frank: Ja det er altid rart at have lidt orden i sit output og kun have det med der er relevant for den aktuelle side.
Hej Claus
Kan du ikke lave et Wordpres Plugin snart, med alle dine smarte rettelser til WordPress?
Du kan jo kalde den “Claus Heinrich Optimizer”?
Ja, ideer er der rigeligt af, men det er lige tiden som det kniber med!
@Kevin: Er desværre et problem med tiden. Kunne nok brygge et godt filter/action plugin sammen hvor man derfra nemt kunne styre det, men ved ikke hvor jeg skulle finde tiden til at lave det 🙂
Hej Claus, dejligt af vide du har tjek på wordpress, vi er også lige gået i gang med det. Glæder mig til af læse mere om smarte wordpress widgets :o)
Hej Claus
Jeg har lige fundet din blog i dag, men ser til min store sorg, at du ikke skriver på den længere. Hvorfor ikke? Den er rigtig god.
Jeg vil ihvertfald gemme den og kigge på den løbende.
Hej Deborah,
Tak for din dejlige kommentar 🙂 Ja det er lidt skidt at jeg ikke har fået opdateret bloggen mere – irriterer mig også lidt. Det er lidt en kombination af tidsmangel og at jeg er ideforladt mht. hvad jeg skulle blogge om.
Tror jeg vil gå lidt i tænkeboks igen og se om jeg kan finde noget godt og relevant at skrive om herinde – din kommentar giver da lidt blod på tanden til at komme i gang igen 🙂
Det glæder mig da, og jeg håber da selvfølgelig, du får tid til at kigge forbi mig på et tidspunkt også. 🙂
Kære Claus.
Lækkert blog system du har lavet her :o)
MVH Thomas
Hej claus
som Deborah også skriver. syntes jeg det er øv der ikke er kommet nyt fra dig længe. jeg følger bloggen her en gang imellem og har fundet mange ting jeg selv kan bruge.
håber der kommer mere fra dig