kaxigt.com

Jag skriver om webben för webben

Under huven på WordPress: custom functions

Postad: 20 juni 2011 | Uppdaterad · Wordpress | 2 Comments
Lästid: 4 minuter

Dagens artikel Under huven på WordPress – custom functions kommer att handla om hur du på ett simpelt vis kan ”återanvända” din funktionsfil om du byter tema. Har du några speciella funktioner som du är förtjust i? Det kanske rent av är så att du drar dig för att byta tema just för att du har vissa funktioner som det nya temat inte stöder?

Denna post innehåller kod-snippar som du kan använda. Det är alltid bra att ta en backup av din stilmall och funktionsfil innan.

Det är ju så att med många funktioner så ges det speciella koder att använda i temat, exempelvis vissa typer av shortcodes – vad tror du händer om ditt nya tema inte stöder just dina shortcodes? Det är inte så svårt att räkna ut. Med de nyaste versionerna av WordPress så kan dock vissa funktioner vara obsoleta (föråldrade).

Möjliggör för två funktionsfiler per tema

Ja du läste rätt, man kan faktiskt använda fler än en funktionsfil till sitt tema. I många ramverk som Thesis och Genesis har man delat upp WordPress i olika filer där varje fil får sin specifika funktion. Nu behöver det inte just vara själva funktionsfilen functions.php utan alla filer som bygger temats front- respektive back end.

Vi ska dra nytta av detta men utan att skapa en massa mappar och filer utan vi nöjer oss med att göra en funktionsfil som stöd till temats egen funktionsfil. Den nya funktionsfilen plockar du sedan med dig för varje nytt tema genom att kalla på den med en speciell kod vi snart ska kika på.

Jag måste dock uppmärksamma om att det är viktigt att ta reda på vilka funktioner temat redan har innan du inkluderar filen – vi vill inte ha dubbla kommandon om temat nu har stöd av samma funktioner som finns i din extrafil. Så kika noga innan vilka funktioner som finns.

Steg 1 – skapa custom_functions.php

Det här är inga konstigheter. Du öppnar ett tomt dokument som du sedan sparar som custom_functions.php. Vi ska senare lägga in ett par koder så vi får nytta av den. Men innan behöver vi arbeta lite med den vanliga funktionsfilen.

Steg 2 – infoga custom_functions.php

Börja med att öppna upp din funktions.php. Direkt efter inledande php-taggen så infogar du nedanstående kod:

/*---------------------------------------------*/
/* Start functions file
/*---------------------------------------------*/

// Set path to the theme specific custom_functions.php
require_once ($includes_path . 'custom_functions.php');

/*---------------------------------------------*/
/* End path to custom_functions.php
/*---------------------------------------------*/

Minsta fel i funktionsfilen genererar programmeringsbuggar i temat så man bör alltid använda kommentarer oavsett om det är i html, css, eller php så man vet vad det är för funktioner det handlar om, var de börjar och var de slutar.

Man kan aldrig vara nog så tydlig!

Lämna inte heller någon  tom radbrytning efter den sista php-taggen på sidan, det genererar garanterat en programmeringsbugg och du får en white screen när du öppnar sidan i webbläsaren.

/* Start Functions file
/*---------------------------------------------*/

// Set path to the theme specific custom_functionsfile
require_once ($includes_path . 'custom_functions.php');
/*---------------------------------------------*/
/* End path to custom_functions.php
/*---------------------------------------------*/


//här kommer fler php koder....

Vad betyder då detta?

Jo – när vi anger require_once så talar vi om att php ska kontrollera om filen custom_functions.php är inkluderad. Är den det så behöver den ju inte inkluderas igen och igen. $includes_path  är söksträngen till filen custom_functions.php.

Det ska vara ett blanksteg mellan strängen – punkten – och den inkluderande filen så ändra inte på det. När du har lagt in koden sparar du filen.

Lägga till funktioner i custom_functions.php

Växla till det tomma dokumentet. Nu ska vi lägga in några koder. Observera vad jag skrev i början av artikeln – har ditt tema redan stöd för dessa funktioner ska du inte lägga in dem i custom_functions.php – hoppa då över de funktioner som redan finns.

Vill du använda kortkoder i din sidebar?

Eftersom dokumentet är tomt börjar vi med den inledande php-taggen, därefter fyller vi på med det vi vill ha. Kontrollera även här att det inte finns en tom radbrytning efter den sista php-taggen på sidan så det genererar en programmeringsbugg.

Faktum är att man helt ska undvika radbrytningar mellan taggarna. Däremot går det utmärkt att ha radbrytning mellan varje avslutande funktion så länge dessa finns placerade mellan <code></code>.

Vi ska strax kika på hur det kan se ut, nu ska vi börja med att lägga in nedanstående filter i custom_functions.php.

add_filter('widget_text', 'do_shortcode'); // Makes it possible to add your shortcodes in widget

Spara filen!

När du skickar upp dina filer har du alltså möjlighet att använda shortcodes i din sidebar, vill du ändra eller ta bort koden öppnar du bara din custom_functions.php. Lätt som en plätt.

Vi fyller på med ytterligare en kod. Vill du att sidan ska uppdatera casheminnet för din rss var fjärde timme? Då infogar vi den funktionen – och nu ska vi nyttja de php-taggar som redan finns genom att lägga in koden inom dessa. Det är ju dumt att skicka ett kommando flera gånger när man inte behöver det, eller hur.

Kika noga på hur jag lägger till kommentarer och ändrar i koden!

// Makes it possible to add your shortcodes in widget add_filter('widget_text', 'do_shortcode'); //add filter to make the rss read cache clear every 4 hours add_filter( 'wp_feed_cache_transient_lifetime', create_function( '$a', 'return 14400;' ) ); 

Eftersom jag lägger in alla funktioner inom php-taggarna så kan jag göra en radbrytning mellan varje funktion. Därtill väljer jag att lägga in en kommentar så jag snabbt vet vad för typ av funktion det handlar om.

Summering

Gernom att använda en custom_functions.php som du enkelt plockar med dig genom att infoga require_once ($includes_path . 'custom_functions.php'); i temats ordinarie funktionsfil så öppnar det sig helt nya möjligheter.

Du är inte längre lika låst till att ha samma typ av teman, utan alla funktioner som kräver modifiering av posterna, exempelvis olika former av kortkoder, kan du nu ta med dig och fortsätta använda tack vare denna extrafil.

Vill du ta bort en specifik funktion om det nya temat redan stöder denna så öppnar du extrafilen och raderar funktionen. Lätt och behändigt. Glöm bara inte att radera eventuella radbrytningar efter den avslutande och sista php-taggen så du slipper en programmeringsbugg.

Lycka till!