De naam komt van het Griekse chronos, tijd. Op een Linux-server leest de cron-daemon tabellen met taken en voert elke opdracht op het geplande moment uit: elke nacht een back-up, het vernieuwen van een Let's Encrypt-certificaat, het opruimen van tijdelijke bestanden. WordPress heeft dezelfde dienst nodig, maar kan niet rekenen op toegang tot de systeemcron, die bij sommige hostingpakketten ontbreekt. Daarom heeft het een eigen mechanisme: WP-Cron.
De syntaxis van een crontab
Elke regel begint met vijf velden: minuut (0 tot 59), uur (0 tot 23), dag van de maand (1 tot 31), maand (1 tot 12) en dag van de week (0 tot 7, waarbij 0 en 7 allebei zondag zijn), gevolgd door de opdracht. Een sterretje betekent "elke", en */15 in het minutenveld start de taak op minuut 0, 15, 30 en 45.
*/15 * * * * opdracht-elke-15-minuten
0 3 * * * opdracht-elke-nacht-om-3-uur
Hoe WP-Cron werkt
Volgens de documentatie van WordPress controleert WP-Cron bij elke paginalading de lijst met geplande taken en voert het de taken uit die aan de beurt zijn. De standaardintervallen zijn hourly, twicedaily, daily en weekly; plugins voegen er andere aan toe. Die werkwijze heeft twee gevolgen. Komt er niemand op de site, dan gebeurt er niets: een taak die om 14.00 uur gepland staat, kan tot 17.00 uur wachten, zoals de documentatie opmerkt. Verloren is ze niet, ze start bij het volgende bezoek. Op een drukbezochte site vindt de controle daarentegen voortdurend plaats.

Het gaat onder meer om het publiceren van ingeplande berichten, de controles en automatische updates, back-ups van plugins, het versturen van nieuwsbrieven en beveiligingsrapporten.
Overstappen op de systeemcron
De oplossing die de documentatie aanbeveelt, is het starten via bezoeken uit te schakelen in wp-config.php:
define( 'DISABLE_WP_CRON', true );
en het starten daarna over te laten aan de cron van de server, met een verzoek naar wp-cron.php of, als de hoster WP-CLI aanbiedt, met een opdracht die alle openstaande taken uitvoert en overlappende uitvoeringen voorkomt:
*/5 * * * * cd /pad/naar/de/site && wp cron event run --due-now --quiet
Bij shared hosting heeft het controlepaneel meestal een onderdeel "Cronjobs" waarin je deze regel zonder terminal toevoegt.
Voor WordPress
- Houd een redelijke interval aan, van 5 tot 15 minuten: elke minuut draaien belast een kleine server voor niets.
- Controleer of de systeemtaak werkt voordat je hem vergeet: zodra DISABLE_WP_CRON is gedefinieerd, draait er niets meer als de crontab-regel fout is.
wp cron event listtoont de volgende tijdstippen en laat zien welke taken achterlopen. - Pas op met kopieën: op een stagingomgeving kunnen geplande taken e-mails naar echte klanten sturen of externe gegevens synchroniseren. Schakel ze uit of maak het versturen onschadelijk.
- Geplande back-ups van een plugin hangen af van WP-Cron: controleer of ze echt worden gemaakt, zodat je je back-upstrategie naleeft.
Veelgemaakte fouten
Een onbekende taak in de lijst met geplande gebeurtenissen verdient een nader onderzoek: sommige malware installeert zichzelf na elke schoonmaak opnieuw via een geplande taak.