Performance verbeteren met Disable WP-Cron

Home - Performance verbeteren met Disable WP-Cron

Veel WordPress-sites gebruiken standaard de ingebouwde planner WP-Cron. Handig op papier, maar in de praktijk kan dit zorgen voor trage laadtijden of juist gemiste taken. Denk aan een blogbericht dat niet op tijd live gaat, of een back-up die niet draait. Gelukkig kun je dit eenvoudig oplossen door WP-Cron uit te schakelen en te vervangen door een echte server-cron.

Wat is WP-Cron en waarom kan het problemen geven?

WordPress heeft een ingebouwde taakplanner, genaamd WP-Cron. Die zorgt ervoor dat geplande taken automatisch worden uitgevoerd, zoals:

  • het publiceren van een ingepland blogbericht
  • het controleren op updates van plugins of thema’s
  • het draaien van back-ups of onderhoudstaken

Het verschil met een “echte” cron (zoals op serverniveau) is dat WP-Cron niet continu draait. Het wordt alleen geactiveerd zodra iemand een pagina van je website bezoekt.

Dat klinkt handig, maar kan twee problemen opleveren:

  • Weinig verkeer? Dan wordt WP-Cron niet vaak aangeroepen en lopen geplande taken te laat of helemaal niet.
  • Veel verkeer? Dan moet WP-Cron bij elke paginalaad checken of er iets gedaan moet worden, wat je site onnodig kan vertragen.

Voor kleine websites met weinig geplande taken is de standaard vaak prima. Maar zodra je site groter wordt of je zeker wilt weten dat taken altijd op tijd lopen, is het slimmer om WP-Cron op een andere manier in te stellen.

Hoe schakel je WP-Cron uit en stel je een systeem-cron in?

WordPress gebruikt standaard WP-Cron om geplande taken af te handelen. Het nadeel is dat dit alleen gebeurt als iemand je site bezoekt. Op kleine sites betekent dit dat taken soms te laat lopen, terwijl op drukke sites elke paginalaad extra serverwerk veroorzaakt.

De oplossing is om WP-Cron op paginalaad uit te schakelen en de taken door een systeem-cron te laten uitvoeren. Een systeem-cron is de takenplanner van je server. Die draait op vaste tijden die jij instelt, onafhankelijk van je bezoekers. Daarmee weet je zeker dat taken altijd op tijd lopen én dat je site sneller reageert.

Hieronder lees je stap voor stap hoe je dat instelt.

1. Zet WP-Cron uit in wp-config.php

De eerste stap is het aanpassen van je wp-config.php. Dit bestand staat in de hoofdmap van je WordPress-installatie. Je vindt het via:

  • SFTP of bestandsbeheer in je hostingpaneel → ga naar de map waar WordPress geïnstalleerd is (vaak public_html of de domeinmap).
  • In die map zie je bestanden zoals wp-config.php, wp-login.php en de mappen wp-content, wp-admin, wp-includes.

Open wp-config.php met een teksteditor. Plaats de volgende regel net boven de tekst “That’s all, stop editing! Happy blogging.”:

define('DISABLE_WP_CRON', true);

Vanaf dit moment draait WP-Cron niet meer bij elk paginabezoek. Je kunt het proces straks via een cron-job op vaste tijden laten lopen, zodat de extra belasting op je pagina’s verdwijnt.

Rollback nodig?
Wil je het terugzetten naar de standaardinstelling, verwijder dan deze regel of zet er // voor. WordPress schakelt WP-Cron dan automatisch weer in.

2. Plan een cron-job in

Nu je WP-Cron hebt uitgezet in wp-config.php, moet er een vervanging komen die het werk overneemt. Dat is een cron-job.

Een cron-job kun je zien als een wekker voor je server: je spreekt af dat hij op vaste tijden even wakker wordt om te checken of er iets gedaan moet worden. Bijvoorbeeld: elke 5 of 15 minuten. Zo weet je zeker dat geplande taken zoals nieuwsbrieven, back-ups of blogberichten altijd op tijd lopen, zonder dat je afhankelijk bent van bezoekers op je site.

Welke methode je gebruikt om die cron-job in te stellen, hangt af van je hostingpakket:

Heb je een uitgebreider pakket of VPS met SSH-toegang (vaak bij managed of professionele hosting)? → gebruik CLI. Dit werkt betrouwbaarder, want je roept WP-Cron direct aan via de server, zonder omwegen.

Heb je een standaard hostingpakket zonder technische toegang tot de server (meestal bij goedkopere of gedeelde hosting)? → gebruik HTTP. Dat betekent simpel gezegd dat de server zelf je site-URL aanroept om WP-Cron te activeren.

Optie A: HTTP (standaard in cPanel, geschikt voor bijna iedereen)

De meest toegankelijke manier is via een HTTP-aanroep. Hierbij bezoekt de server automatisch de wp-cron.php-pagina van je site.

Zo stel je dit in bij Surver:

  1. Log in op je cPanel.
  2. Zoek onder het kopje Geavanceerd naar Cron Jobs.
  3. Klik op Add New Cron Job.
  4. Stel het interval in, bijvoorbeeld elke 5 minuten (via het dropdownmenu “Common Settings” kun je dit snel selecteren).
  5. Vul bij Command het volgende in (vervang jouwdomein.nl door je eigen domein):
wget -q -O - "https://jouwdomein.nl/wp-cron.php?doing_wp_cron" >/dev/null 2>&1

Klik op Add New Cron Job. Vanaf dat moment voert je server elke paar minuten de WP-Cron uit, ook als er geen bezoekers zijn.

Optie B: WP-CLI (geavanceerd, via SSH)

Heb je een pakket met SSH-toegang en wil je maximale betrouwbaarheid, dan kun je de cron ook via WP-CLI instellen. Dit gaat buiten HTTP om en is minder gevoelig voor caching of firewalls.

  1. Log via SSH in op je server (Surver kan je helpen dit in te schakelen).
  2. Open de cron-tab met: crontab -e
  3. Voeg een taak toe, bijvoorbeeld:

Met PHP:

*/5 * * * * cd /home/gebruikersnaam/public_html && php -q wp-cron.php >/dev/null 2>&1

Met WP-CLI:

*/5 * * * * cd /home/gebruikersnaam/public_html && wp cron event run --due-now >/dev/null 2>&1
  1. Sla op en sluit af. De cron-job is nu actief.

Advies: voor de meeste klanten is Optie A via cPanel ruim voldoende. Alleen als je met grote webshops of zware automatiseringen werkt, kan Optie B via WP-CLI meer stabiliteit bieden.

3. Kies het juiste interval

Een cron-job moet vaak genoeg draaien om alle taken tijdig af te handelen, maar ook weer niet zó vaak dat de server onnodig belast wordt. Voor de meeste WordPress-sites werkt een interval van elke 5 tot 15 minuten prima.

  • 5 minuten: geschikt voor sites met veel geplande taken, zoals grote webshops of sites met veel automatisering.
  • 15 minuten: voldoende voor blogs, zakelijke sites en kleinere webshops.
  • Korter dan 5 minuten: alleen nodig bij zeer specifieke use-cases (bijvoorbeeld kritieke API-syncs).

Veel managed hostingpartijen hanteren standaard 15 minuten. Pas dit alleen aan als je merkt dat taken achterblijven.

4. Controleren of alles draait

Zodra je een cron-job hebt ingesteld, is het belangrijk te checken of WP-Cron ook echt goed loopt. Dat kun je doen met een paar simpele commando’s via WP-CLI.

  • Test de spawner:
wp cron test

Als je de melding krijgt “WP-Cron spawning is working as expected”, weet je dat de basis goed staat.

  • Bekijk de geplande events:
wp cron event list

Let hierbij vooral op de kolommen Next Run en Recurrence om te zien wanneer de volgende taak gepland staat.

  • Draai achterstallige taken direct uit:
wp cron event run --due-now

Handig om te controleren of alle processen netjes werken of om achterstand meteen weg te werken.

Met deze drie checks zie je snel of je cron goed ingesteld is en of je geplande taken daadwerkelijk lopen.

Troubleshooting bij problemen

Werkt je cron-job niet zoals verwacht? Dit zijn de meest voorkomende oorzaken en oplossingen:

  • Taken lopen te laat of niet
    Controleer eerst of de cron-job echt draait. Bij HTTP-cron kun je in de serverlogs kijken of wp-cron.php wordt aangeroepen. Met WP-CLI kun je achterstallige taken forceren met: wp cron event run --due-now
  • HTTP-cron werkt niet
    Vaak blokkeert caching, een firewall of Basic Auth de aanroep. Probeer dan de CLI-methode, die dit soort lagen omzeilt.
  • Je ziet ?doing_wp_cron in URLs
    Dit is een normaal bijeffect van HTTP-triggers. Wil je dit niet, kies dan de CLI-variant.
  • Multisite of managed hosting
    Sommige hostingpartijen hebben al een server-cron ingesteld. Zet WP-Cron alleen uit als je zeker weet dat er een alternatief actief is.
  • Beveiligingsoverwegingen
    Laat wp-cron.php niet onbeperkt publiek benaderen. Met CLI en WP-CLI beperk je het aanvalsoppervlak en heb je meer controle.

Met deze checks los je de meeste problemen direct op. Blijft het fout gaan, dan is het verstandig om met je hostingpartij te overleggen – vaak bieden zij al een standaardoplossing.

Checklist & best practices

Tot slot, de korte samenvatting om je WP-Cron veilig en betrouwbaar in te richten:

  • Zet WP-Cron uit in wp-config.php met define('DISABLE_WP_CRON', true);
  • Plan een systeem-cron in, bij voorkeur via CLI of WP-CLI.
  • Gebruik een interval van 5 tot 15 minuten, afhankelijk van je site.
  • Controleer de werking met wp cron test en wp cron event list.
  • Los achterstallige taken op met wp cron event run --due-now.
  • Vermijd HTTP-triggers als caching, firewalls of Basic Auth roet in het eten gooien.

Door WP-Cron uit te schakelen en een echte cron-job te gebruiken, worden geplande taken altijd op tijd uitgevoerd zonder dat dit je laadtijden vertraagt.

Wil je dit soort optimalisaties liever professioneel laten inrichten? Bij Surver’s WordPress optimalisatie zorgen we ervoor dat jouw site technisch strak staat en optimaal presteert, zodat jij je kunt richten op je business.

Foto van David Ladiges
David Ladiges
Technical Lead
Op deze pagina

Deel dit artikel:

Gerelateerde artikelen