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

– Om din leverantör har stöd för WP-CLI

Om ditt webbhotell/serverleverantör har stöd för WP-CLI (vilket de bör ha) så är det bättre att köra cron via WP-CLI. Lägg då in denna rad i crontab istället:

0 * * * * wp cron event run --due-now --path=/hemkatalog-för-min-hemsida/ --quiet

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.