WordPress-tilläggen som ditt webbhotell fruktar

Igår kväll föreläste jag, med WordPress Stockholm hos .SE och FooCafe, om de mest resurskrävande WordPress-tilläggen, samt hur man bör installera/testa tillägg i WordPress. Min presentation var anpassad för nybörjare/medel, med några lite mer avancerade tips.

Klicka på bilden nedan för att ladda ner presentationen som en PDF (0,6MB):

WordPress-tilläggen som ditt webbhotell fruktar

Stort tack till er alla som kom och lyssnade (samt ställde frågor)!

Old school rules

Jag har en plan för vilken/vilka bilar vi ska ha hemma. Den tar sakta form. Nu är en av två bilar på plats, med vår Saab 96 från -62. Den ska få sig en enklare genomgång, inför sin sista besiktning. Sen blir det tvåtaktbus resten av sommaren.

Saab 96 -62

Samtidigt ska vår pickis skruvas ihop och säljas, samt vår 9-3X avyttras så småningom. Men då ska vi även ha fått den andra bilen på plats enligt plan.

WP Stockholm, Snabbare hemsida med WordPress

I kväll föreläste jag om prestanda och optimering av WordPress, med WordPress Stockholm hos .SE och FooCafé i Stockholm. Det var en rätt så övergripande presentation, främst anpassad för medel/nybörjare, men även innehållande lite mer avancerade tips.

Klicka på bilden nedan för att ladda ner presentationen som en PDF (0,5 MB):

Hur man får en snabbare hemsida med WordPress

Stort tack till er alla som kom och lyssnade/pratade prestanda med oss i kväll!

Bättre schemaläggning i WordPress

Om man vill schemalägga uppgifter i Unix/Linux-baserade system så använder man något som heter Cron. På samma sätt har WordPress en egen lösning för schemaläggning, som heter WP-Cron.

WP-Cron ser till att WordPress letar efter uppdateringar, publicerar schemalagda inlägg och utför diverse andra uppgifter (t ex kontrollerar trasiga länkar med Broken Link Checker).

Fördelen med WP-Cron är att det funkar överallt. Det är långt från alla webbhotell och servermiljöer som tillåter schemaläggning av uppgifter hur som helst. Nackdelen är att WP-Cron kör varje gång en sida laddas i WordPress, vilket kan orsaka onödig belastning (läs: ge en långsammare hemsida).

Det är dock enkelt att rätta och förbättra schemaläggningen i WordPress.

– Inaktivera schemaläggning via WP-Cron

Börja med att inaktivera WP-Cron, genom att lägga in följande kodrad i wp-config.php.

define('DISABLE_WP_CRON', true);

– Schemalägg via riktiga cron istället

Om du kör WordPress på en Linux-baserad server (vilket du bör göra) och har åtkomst till servern via SSH, så kan du starta crontab (en redigerare för cron) via terminalen med följande kommando.

crontab -e

När du har valt en redigerare (välj t ex ”nano”), lägg in nedanstående rad längst ner i filen.

0 * * * * cd /hemkatalog-för-min-hemsida; php -q wp-cron.php

Ersätt ”/hemkatalog-för-min-hemsida” med den fullständiga sökvägen till hemkatalogen för din hemsida, t ex /var/www/minhemsida.se (från roten). Spara och stäng till sist filen.

Därefter kör WP-Cron en gång varje heltimme, via PHP direkt på servern. Det går att köra WP-Cron med anrop mot webbplatsen t ex via wget, men då påverkas webbservern/besökare i onödan.

Att schemalägga uppgifter via cron är även möjligt att få till via kontrollpanelen hos vissa webbhotell. Om du inte känner dig bekväm med SSH/terminal, använd det istället.

Ett litet, men naggande gott, fel i PHP

Sprang på ett lagom irriterande fel i ett WordPress-tillägg under helgen som gick. Med felmeddelandet ”Cannot modify header information – headers already sent” som enligt bl a WordPress Codex, FAQ Troubleshooting betyder att det finns tecken före/efter php-taggarna.

Öppnade den berörda filen med ett flertal olika textredigerare, men lyckades inte hitta dessa tecken. Körde till slut följande kommando i en terminal:

less filnamn.php

Och såg då att filen inleddes med ”<U+FEFF>”. Vilket innebar att filen teckenkodades med UTF-8 BOM istället för enbart UTF-8. Försökte lösa det genom att skapa en ny fil, med samma innehåll, men felet kvarstod. Googlade då lite och hittade denna lösning (via en terminal):

sed -i '1s/^\xEF\xBB\xBF//' filnamn.php

Laddade upp filen, laddade om WordPress och vips så var felet borta.