Hooks, Action & Filter i Wordpress
Skrevet af Claus Heinrich den 18. januar 2010 klokken 18:06
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”?
@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
Ja, ideer er der rigeligt af, men det er lige tiden som det kniber med!