5 tips för snabbare utveckling av WordPress-tema

När jag utvecklar en webbplats i WordPress står temat (eng. theme, även kallat ”mall”) i centrum, eftersom allt i WordPress kretsar kring temat. Det är oftast också det som tar längst tid — ett komplett tema är väldigt omfattande.

Den senaste tiden har jag utvecklat flera WordPress-teman och har lärt mig ett par knep som spar mycket tid. Självklart är alla projekt olika, men …

Utgå från Underscores (_s)

Det här är det viktigaste tipset, som kommer bespara dig många timmar eller dagars arbete och frustration:

Utveckla aldrig mer ett WordPress-tema från grunden! Det finns många grundstommar som du kan använda för att spara flera arbetsdagar och få ett mer komplett och professionellt tema. Nu menar jag inte parent themes eller ramverk, utan ett ”färdigt” tema som är gjort för att vidareutveckla och snygga till precis hur som helst.

Jag har flera gånger använd Underscores, som är framtaget av Automattic och därför förmodligen är det bästa alternativet. Så här förklarar de själva hur fantastiskt det är:

It incorporates code and tough lessons learned from the best WordPress themes: Kubrick, The Sandbox, Thematic, Twenty Ten, Toolbox, Twenty Eleven … As each new default theme is released, _s will be reviewed and updated. … Likewise with every theme the WordPress.com Theme Team builds using _s. As we come up with new best practices and learn new lessons in our themes, all that code makes its way back to _s.

Jag hoppas att du blivit övertygad.

Färdigt innehåll för testning

Det är omöjligt att utveckla ett tema utan något innehåll på webbplatsen, men att skapa fejkade menyer, widgets, kategorier, etiketter och alla tänkbara varianter av innehåll tar lång tid. Som tur är finns det färdigt innehåll som du kan importera!

WP Test är en XML-fil med (nästan) allt innehåll som du behöver för att utveckla och testa dina teman! Du kommer förmodligen utbrista ”oj, ja, det hade jag inte tänkt på” flera gånger när du granskar ditt tema.

Generator för Custom Post Types

Om du utvecklar ett WordPress-tema som inte bara ska vara en blogg, kommer du förmodligen behöva skapa en eller flera custom post types. Det är inte alls krångligt om du använder en generator som skapar PHP-koden åt dig, exempelvis den här eller den här.

Duger det med ett child theme?

Ett ännu enklare sätt att utveckla ett tema på än att använda en grundmall som Underscores, är att skapa ett child theme. Då skapar du ett nytt tema som ärver utseende och funktioner från ett annat (kallat parent theme). Du blir förstås mer begränsad och bör välja ditt parent theme med omsorg, men det kan löna sig!

Temat som den här bloggen använder är ett (egenutvecklat) child theme till Twenty Twelve.

Instant WordPress (endast Windows)

Instant WordPress är ett fristående program som startar en webb- och databasserver med förinstallerat WordPress på din Windows-dator. Du får alltså en lokal utvecklingsserver väldigt enkelt och behöver inte ladda upp dina filer via ftp eller liknande för att testa. Mycket smidigt!

Avslutande tips

Utöver detta bör du förstås ta en titt i manualen och kanske läsa en uppdaterad bok om WordPress-utveckling. WordPress förändras ganska snabbt, och om du inte har utvecklat med det på länge, rekommenderar jag att du tar en titt på nymodigheterna som kan förenkla för dig.

Surftown och Space2u är grymt bra på WordPress

I oktober publicerade jag ett test av WordPress-prestanda på fyra stora svenska webbhotell. Sedan dess har testerna (som utförs av Pingdom) fortsatt oavbrutet. Nu har jag tre månaders data att publicera, och det ser nästan likadant ut:

Webbhotell Svarstid Nedtid
Binero 1810 ms 14:22 h
Loopia 1859 ms 8:20 h
Space2u 401 ms 2:05 h
Surftown 508 ms 1:45 h

(För mer information om hur testet har gått till och annat, se den tidigare artikeln.)

Det är alltså ett stort glapp mellan två mycket bra bra och två mycket dåliga webbhotell vad gäller prestanda.

Space2u och Surftown är klara vinnare, som bjuder på riktigt bra prestanda. Å andra sidan har vi två webbhotell som i mina ögon anses mer populära, och de har märkligt nog hamnat i botten med riktigt dålig prestanda.

Det tar 4,5 gånger längre tid för besökarna att komma in på din blogg om du har den på Binero än på Space2u, dessutom kommer den vara helt otillgänglig 3 gånger så ofta. Hur kan det vara ”Bäst i test” enligt Internetworld?

WordPress-prestanda på webbhotell

För drygt en månad sedan installerade jag WordPress på ett par svenska webbhotell för att på något sätt mäta prestandaskillnader mellan dem på ett verkligt sätt. Jag skapade alltså identiska bloggar och använde sedan Pingdom för att mäta svarstiderna mellan 13 september och 20 oktober.

Resultat

Webbhotell Genomsnitt Min-Max
Binero 1644 ms 799-2540 ms
Loopia 1875 ms 1061-5498 ms
Space2u 539 ms 337-2300 ms
Surftown 515 ms 356-1417 ms

Svarstiderna gäller endast från Pingdoms servrar i Stockholm och Köpenhamn. Jag tycker inte att svarstiderna från övriga världen är lika intressanta.

Svarstiden är alltså den tid det tar från att Pingdom kontaktar servern till dess att bloggens förstasida har genererats och skickats tillbaka. Det inkluderar exekvering av PHP-kod och hämtning av data från MySQL-databas, men inte hämtning av bilder, Javascript, stilmallar etc.

Resultatet säger ju tydligt att Binero och Loopia är betydligt långsammare än Space2u och Surftown. Svarstiderna är också betydligt jämnare hos de snabbare webbhotellen. Jämför Loopia till vänster och Surftown till höger:

Loopia Surftown

Notera att det här testet inte är ett belastningstest, som visar hur webbsidan svarar under stor belastning med många besökare, utan endast testar en besökare i taget.

Upplevelser

Hos alla webbhotell kunde jag installera WordPress med något slags installationsskript. Uppgradering av både WordPress och plugins fungerade också från start, men hos Space2u och Surftown måste man fylla i ftp-uppgifterna manuellt.

Uppgradering gick absolut långsammast hos Surftown.

Hos Space2u var jag tvungen att redigera wp-config.php och ändra variabeln WP_LANG för att kunna välja svensk WordPress, hos övriga behövdes det inte.

Binero aktiverade automatiskt tillägget WP Super Cache (jag avaktiverade dock det för testet).

Hos Space2u måste man betala 295 kr per extra domän och det dröjer till klockan 4 på morgonen nästa dag innan den aktiveras. Hos övriga kan man lägga till nya domäner direkt och utan kostnad.

Webbhotellen

Jag registrerade ett vanligt webbhotell hos fyra leverantörer. Några hade jag redan oanvända konton hos sedan tidigare, och använde då dem istället för att skapa nya.

Namn Kostnad Registreringsdatum
Binero 69 kr/mån 7 maj (nya plattformen)
Loopia 83 kr/mån 29 december
Space2u 119 kr/mån 10 september
Surftown 61 kr/mån 10 september

Till varje konto kopplade jag sedan ett oanvänt domännamn.

Det är förstås möjligt att de nyare kontona ligger på servrar som inte har så många andra konton, och de äldre kontona ligger på överfulla servrar. Det får gärna någon kommentera.

Bloggarna

Varje blogg har den svenska versionen av WordPress 3.01 och använder standardtemat Twenty Ten med standardwidgets. Inga tillägg är aktiverade.

Jag la in tre artiklar med varierande längd av Lorem Ipsum (dock exakt samma på de olika bloggarna).