TL;DR
WP-Cron ist kein echter zeitgesteuerter Cronjob. WordPress prüft bei regulären Seitenaufrufen, ob geplante Aufgaben fällig sind. Bei stark frequentierten Websites kann das zusätzliche PHP-, Cache- und Datenbanklast verursachen. Bei wenig Traffic können geplante Aufgaben dagegen verspätet ausgeführt werden.
Die bessere Lösung für ambitionierte WordPress-Websites:
WP-Cron in der wp-config.php deaktivieren
einen echten Server-Cronjob einrichten
wp-cron.php beispielsweise alle 5 bis 15 Minuten aufrufen
dadurch Cron-Aufgaben unabhängig von Website-Besuchern ausführen
Serverlast besser kontrollieren und Lastspitzen reduzieren
geplante Beiträge, Backups und andere Hintergrundprozesse zuverlässiger ausführen
Wichtig: WP-Cron niemals deaktivieren, ohne einen echten Cronjob als Ersatz einzurichten.
WP-Cron deaktivieren: So verbesserst du Ladezeit und WordPress-Performance
Deine WordPress-Website ist eigentlich sauber aufgebaut. Das Theme ist schlank, die Anzahl der Plugins überschaubar und trotzdem wirken einzelne Seitenaufrufe plötzlich langsamer als erwartet.
Eine mögliche Ursache befindet sich an einer Stelle, die viele WordPress-Nutzer kaum beachten: WP-Cron.
WP-Cron ist das interne System von WordPress für zeitgesteuerte Aufgaben. Vereinfacht gesagt führt WordPress damit im Hintergrund kleine Jobs aus, zum Beispiel:
geplante Beiträge veröffentlichen
automatische Wartungsaufgaben durchführen
Backups über entsprechende Plugins anstoßen
Cache-Dateien bereinigen
E-Mails oder Benachrichtigungen versenden
Plugin-interne Aufgaben ausführen
bestimmte Update-Prüfungen und andere wiederkehrende Prozesse starten
Das klingt zunächst sinnvoll und das ist es grundsätzlich auch.
Das Problem liegt weniger darin, was WP-Cron erledigt, sondern darin, wie WordPress prüft, wann diese Aufgaben ausgeführt werden müssen.
Wie WP-Cron wirklich funktioniert und warum es die Performance bremsen kann
Der Name WP-Cron erinnert an klassische Cronjobs unter Linux. Technisch handelt es sich aber nicht um dasselbe Prinzip. Ein echter Server-Cronjob wird zu einem festgelegten Zeitpunkt vom Betriebssystem oder der Hostingumgebung gestartet.
WP-Cron besitzt standardmäßig keinen solchen unabhängigen Zeitgeber.
Stattdessen prüft WordPress im Rahmen regulärer Website-Aufrufe, ob geplante Aufgaben inzwischen fällig geworden sind. Die offizielle WordPress-Dokumentation weist deshalb ausdrücklich darauf hin, dass WP-Cron nicht kontinuierlich läuft und zeitkritische Aufgaben bei fehlenden Seitenaufrufen verspätet ausgeführt werden können.
Was passiert bei einem Seitenaufruf?
Vereinfacht sieht der Ablauf so aus:
Seitenaufruf → WordPress wird geladen → Cron-Liste wird geprüft → Zeitstempel werden verglichen → fällige Aufgaben werden erkannt → wp-cron.php wird angestoßen
WordPress speichert seine geplanten Cron-Ereignisse in der Option cron. Diese wird über die WordPress Options API abgerufen und enthält unter anderem die Zeitstempel der geplanten Aufgaben.
Technisch bedeutet das nicht zwingend, dass bei jedem einzelnen Aufruf eine physische Datenbankabfrage erfolgen muss. Ein persistenter Object Cache kann entsprechende Daten zwischenspeichern. Die Cron-Prüfung als Teil des WordPress-Ablaufs bleibt jedoch bestehen.
Wird tatsächlich ein fälliger Job gefunden, stößt WordPress die wp-cron.php standardmäßig über einen zusätzlichen HTTP-Request an. WordPress hat die Auslösung inzwischen so optimiert, dass sie möglichst wenig Einfluss auf die eigentliche Seitenausgabe hat. Dennoch bleibt sie zusätzliche Arbeit, die auf stark ausgelasteten Websites relevant werden kann.
Das macht den Standardmechanismus etwas paradox.
Bei sehr wenig Traffic kann WP-Cron zu selten laufen. Bei sehr viel Traffic wird häufiger geprüft, obwohl eine Prüfung alle paar Minuten vollkommen ausreichen würde.
Genau an dieser Stelle kann ein echter Cronjob sinnvoll sein.
WP-Cron deaktivieren
Das Ziel besteht nicht darin, die WordPress-Aufgaben abzuschaffen. Wir möchten lediglich verhindern, dass WordPress bei normalen Website-Aufrufen selbstständig nach fälligen Cronjobs sucht.
Dafür gibt es die offizielle WordPress-Konstante DISABLE_WP_CRON. WordPress dokumentiert diese Möglichkeit ausdrücklich in der Konfiguration.
Schritt: wp-config.php-Datei öffnen:
Öffne die Datei: wp-config.php
Sie befindet sich normalerweise im Hauptverzeichnis deiner WordPress-Installation. Um diese Datei zu öffnen, muss Du Dich mit einem FTP-Programm mit Deinen Webserver verbidnen. Bei webgo kannst Du auch alternativ den WebFTP im Kundenportal verwenden.
Schritt: WP-Cron deaktivieren
Füge folgende Zeile ein: define( 'DISABLE_WP_CRON', true );
Am besten platzierst du sie vor der bekannten Zeile:
/* That's all, stop editing! Happy publishing. */
Je nach Sprache und WordPress-Version kann der Kommentar leicht anders formuliert sein.
Nach dem Speichern führt ein normaler Seitenaufruf nicht mehr dazu, dass WordPress selbstständig WP-Cron startet. Im WordPress-Core wird bei gesetztem DISABLE_WP_CRON die entsprechende Cron-Auslösung übersprungen. Aber Achtung: Damit ist die Arbeit noch nicht erledigt.
Wichtig: Jetzt einen echten Server-Cronjob einrichten
Wenn du WP-Cron deaktivierst und keinen Ersatz einrichtest, können zeitgesteuerte WordPress-Aufgaben nicht mehr zuverlässig abgearbeitet werden.
Das kann unter anderem betreffen:
geplante Beiträge
Plugin-Backups
Wartungsjobs
Cache-Bereinigungen
zeitgesteuerte E-Mails
Plugin-interne Hintergrundprozesse
bestimmte Update- und Synchronisationsaufgaben
WP-Cron solltest du deshalb niemals einfach nur deaktivieren.
Der entscheidende zweite Schritt besteht darin, wp-cron.php regelmäßig über einen echten zeitgesteuerten Cronjob aufzurufen.
Was ist ein echter Cronjob und welches Intervall ist sinnvoll?
Ein Server-Cronjob wird unabhängig von deinen Website-Besuchern ausgeführt. Du kannst beispielsweise festlegen:
Führe wp-cron.php alle 15 Minuten aus.
Ob deine Website in dieser Zeit 0, 10 oder 10.000 Besucher hat, spielt keine Rolle. Genau das macht den Ablauf wesentlich planbarer.
Für viele klassische WordPress-Websites ist ein Intervall alle 10 bis 15 Minuten ein guter Ausgangspunkt.
Damit werden WordPress-Aufgaben regelmäßig ausgeführt, ohne WP-Cron bei jedem normalen Website-Aufruf prüfen zu lassen. Für Blogs, Unternehmensseiten und viele gewöhnliche WordPress-Projekte ist dieses Intervall meist vollkommen ausreichend.
Bei dynamischen Anwendungen kann allerdings ein kürzeres Intervall sinnvoll sein. Dazu gehören beispielsweise:
große WooCommerce-Shops
Membership-Websites
Buchungsplattformen
Websites mit vielen Hintergrundprozessen
Anwendungen mit zeitkritischen Automatisierungen
Hier können beispielsweise bis 5 Minuten geeigneter sein.
Das optimale Intervall hängt deshalb immer davon ab, welche Plugins und Prozesse deine Website tatsächlich verwendet.
Variante 1: wp-cron.php über HTTP aufrufen
Eine weit verbreitete Möglichkeit ist der Aufruf über wget:
wget -q -O - "https://example.de/wp-cron.php?doing_wp_cron" > /dev/null 2>&1
Alternativ funktioniert häufig auch curl:
curl -s "https://example.de/wp-cron.php?doing_wp_cron" > /dev/null 2>&1
Achtung: Ersetze example.de durch deine eigene Domain.
Der Vorteil dieser Variante: WordPress wird ähnlich wie bei einem normalen Webrequest ausgeführt. Das kann insbesondere bei Plugins hilfreich sein, die bestimmte Eigenschaften einer Webserver-Anfrage erwarten.
Auch die offizielle WordPress-Dokumentation empfiehlt als einfache Möglichkeit, den System-Scheduler regelmäßig eine Anfrage an wp-cron.php senden zu lassen.
Variante 2: wp-cron.php direkt mit PHP ausführen
Du kannst das PHP-Skript auch direkt aufrufen:
/usr/bin/php8.4 /home/www/deine-wordpress-installation/wp-cron.php
Dieser Pfad bezieht sich auf die Pfadstruktur von webgo Webhosting-Servern. Der Pfad bei anderen Hostern kann abweichen.
Hinweis: Es ist möglich gezielt PHP Versionen anzusprechen, in diesem Fall PHP 8.4, was meist empfehlenswert ist. Es wäre auch möglich eine andere Version anzusprechen.
So richtest du den Cronjob bei webgo ein
Auch bei einem webgo Webhosting lassen sich Cronjobs über die Hostingverwaltung einrichten. Für Intervalle wie beispielsweise alle 15 Minuten sind individuelle Cronjob-Konfiguration möglich.
Beispiel für einen 15-Minuten-Cronjob:
In klassischer Cron-Syntax sieht ein Intervall von 15 Minuten beispielsweise so aus:
*/15 * * * *
Zusammen mit einem PHP-Aufruf könnte der vollständige Eintrag beispielsweise lauten:
*/15 * * * * /usr/bin/php8.4 /home/www/deine-wordpress-installation/wp-cron.php > /dev/null 2>&1
Wichtig ist, dass du nicht einfach fremde Pfade kopierst. Prüfe immer, welcher PHP-Befehl und welcher Dateipfad in deiner Hostingumgebung tatsächlich gelten. Bei einem webgo Webhosting ist der Dateipfad, wie oben dargestellt.
Zum erstellen von Cronjobs haben wir ansonsten folgende Anleitungen:
Cronjob erst testen, dann vergessen
Nach der Umstellung solltest du kontrollieren, ob deine Cronjobs wirklich ausgeführt werden.
Typische Tests sind:
einen WordPress-Beitrag für einige Minuten in der Zukunft planen
kontrollieren, ob Backup-Jobs weiterhin starten
prüfen, ob Plugin-Automatisierungen ausgeführt werden
Fehlermeldungen des Server-Cronjobs kontrollieren
Fortgeschrittene Nutzer können außerdem WP-CLI verwenden. WordPress stellt beispielsweise Befehle wie wp cron event list zur Verfügung, mit denen sich geplante Cron-Ereignisse kontrollieren lassen.
Tipp: Aktivieren Sie bei den Cronjob-Einstellungen im webgo Webhosting die E-Mail-Benachrichtigung bei fehlerhafter Ausführung. So erhalten Sie bei einem Fehlschlag eine automatische Systeminfo an die hinterlegte E-Mail-Adresse, was bei der Fehlersuche behilflich sein kann.
Fazit: Weniger unnötige Arbeit, besser planbare WordPress-Performance
WP-Cron ist praktisch, weil WordPress damit ohne spezielle Serverkonfiguration zeitgesteuerte Aufgaben anbieten kann. Für eine kleine Website kann diese Standardeinstellung vollkommen ausreichend sein. Bei stärker frequentierten WordPress-Websites oder Installationen mit zahlreichen Hintergrundprozessen ist ein echter Server-Cronjob jedoch häufig die sauberere Lösung.
Statt WordPress bei normalen Seitenaufrufen selbst prüfen zu lassen, ob gerade eine Aufgabe fällig ist, übergibst du diese Verantwortung an einen echten Zeitplan.
Das bringt gleich mehrere Vorteile:
weniger wiederkehrende Cron-Prüfungen bei normalen Website-Aufrufen
kontrollierbarere Serverlast
zuverlässigere Ausführung geplanter Aufgaben
weniger Abhängigkeit vom tatsächlichen Besucheraufkommen
stabilere Abläufe bei Traffic-Spitzen
besser vorhersehbare Hintergrundprozesse
Wie groß der messbare Performance-Gewinn ausfällt, hängt von deiner Website ab. Auf einer kleinen WordPress-Seite mit wenigen Cron-Ereignissen kann der Unterschied gering sein. Bei stark frequentierten Websites, WooCommerce-Shops oder Installationen mit vielen geplanten Hintergrundaufgaben kann die Umstellung dagegen spürbar zur Entlastung von PHP, Datenbank und Serverressourcen beitragen.
Die wichtigste Regel lautet deshalb:
WP-Cron nicht einfach abschalten, sondern unbedingt durch einen echten Server-Cronjob ersetzen.
So behält WordPress seine zeitgesteuerten Funktionen, während du deren Ausführung deutlich besser kontrollierst.