WP-Cron – Das Cron-System von WordPress

Titelbild WP-Cron optimieren; Tipps & Tricks
Lesedauer: 8 Minuten

Die meisten WordPress-Seiten führen regelmäßig automatisierte Aufgaben im Hintergrund aus – vom Prüfen auf Updates über das Versenden von E-Mails bis zum geplanten Veröffentlichen von Blogbeiträgen. WordPress nutzt dafür ein eigenes Cron-System namens WP-Cron, das diese zeitgesteuerten Aufgaben verwaltet. In diesem Blogbeitrag erklären wir ausführlich, was WP-Cron ist, wie es funktioniert und warum es in der Standard-Konfiguration nicht immer optimal arbeitet. Anschließend zeigen wir, wie man WP-Cron optimieren kann – etwa durch den Einsatz echter Server-Cronjobs (z.B. via Plesk) – um geplante Tasks in WordPress zuverlässig und performant einzurichten.

 Das Wichtigste in Kürze:

Wer WP-Cron korrekt konfiguriert und optimiert, stellt sicher, dass geplante Aufgaben in WordPress zur richtigen Zeit ausgeführt werden und gleichzeitig die Besucher der Seite von schnellen Ladezeiten profitieren. Kurz gesagt: WordPress läuft „wie ein Uhrwerk“, wenn WP-Cron richtig eingerichtet ist.

Was ist WP-Cron?

WP-Cron (die Datei wp-cron.php) ist WordPress’ eingebautes System für zeitgesteuerte Aufgaben und nimmt damit eine ähnliche Rolle ein wie Cronjobs auf dem Server. Im Gegensatz zum normalen System-Cron, der auf dem Server zu festen Zeiten im Hintergrund läuft, wird WP-Cron nur im Rahmen von WordPress selbst ausgeführt. Das heißt, WP-Cron wird jedes Mal bei einem Seitenaufruf aktiviert, prüft die anstehenden Aufgaben und führt sie bei Bedarf aus. Diese Pseudo-Cron-Lösung ist notwendig, da viele Hosting-Umgebungen – insbesondere Shared-Hosting ohne eigenen Serverzugriff – keinen echten Cronjob erlauben. WP-Cron ist gewissermaßen ein Workaround von WordPress, um dennoch geplante Tasks ausführen zu können.

Durch dieses Konzept benötigt WP-Cron keinen separaten Systemdienst oder besondere Serverrechte und funktioniert auf praktisch jedem Webhosting. Allerdings bringt diese Herangehensweise auch einige Nachteile in Bezug auf Performance und Zuverlässigkeit mit sich, wie wir später sehen werden. Zunächst werfen wir aber einen Blick darauf, welche Aufgaben es in WordPress überhaupt übernimmt.

Geplante Aufgaben in WordPress mit WP-Cron

In jeder WordPress-Installation gibt es zahlreiche Routineaufgaben, die regelmäßig oder zu bestimmten Zeitpunkten automatisch ablaufen sollen. Es sorgt beispielsweise dafür, dass:

  • WordPress-Core, Plugins und Themes periodisch auf Updates geprüft werden,
  • geplante Beiträge pünktlich veröffentlicht werden,
  • regelmäßige Wartungs-Jobs wie das Löschen von alten Kommentarentwürfen erfolgen, und
  • Plugins zeitgesteuerte Aktionen durchführen können – etwa Backup-Plugins, die nach einem festgelegten Zeitplan automatische Sicherungen erstellen.

Diese Beispiele zeigen, wie zentral WP-Cron für den automatisierten Betrieb einer WordPress-Seite ist. Sobald eine Aufgabe im System geplant wurde, speichert WordPress ein entsprechendes Cron-Ereignis in der Datenbank. Bei jedem Seitenaufruf wird dann geprüft, ob eines dieser Ereignisse fällig ist, um die hinterlegte Aktion auszuführen. Für Entwickler gibt es Funktionen wie wp_schedule_event(), um eigene Tasks anzulegen, doch auch als normaler Nutzer profitiert man standardmäßig von den internen WP-Cron-Aufgaben (Updates, Veröffentlichungen etc.).

Tipp: Falls du einmal nachsehen möchten, welche Cron-Tasks in Ihrer WordPress-Installation geplant sind, kannst du das Plugin WP Crontrol installieren. Im Backend unter „Werkzeuge → Cron-Ereignisse“ listet es alle aktuellen WP-Cron-Ereignisse auf. Für die meisten Anwendungsfälle muss man WP-Cron jedoch nicht manuell steuern – wichtig ist vor allem, dass es reibungslos und zum richtigen Zeitpunkt läuft.

Du möchtest immer die neuste PHP-Version?

Teste jetzt das WordPress-Webhosting von akasolutions.de! Wir kümmern uns darum, dass deine Webseite stets die neuste PHP-Version verwendet, und das, ohne Mehrkosten. Unser Expertenteam unterstützt dich beim Umzug deiner WordPress-Webseite von deinem altem Anbieter zu akasolutions.de 😉

Wie funktioniert WP-Cron intern?

Die Funktionsweise von WP-Cron unterscheidet sich deutlich von einem klassischen Cron-Daemon auf Server-Ebene. WP-Cron wird initiiert, sobald jemand die Website aufruft (sei es ein Besucher oder ein Admin im Dashboard). Während der WordPress-Initialisierung prüft WP-Cron im Hintergrund die Datenbank (genauer gesagt einen Eintrag in der wp_options Tabelle), ob geplante Tasks fällig sind.

Wenn eine oder mehrere Aufgaben ihren geplanten Zeitpunkt erreicht haben, stößt WordPress im Rahmen des Seitenaufrufs einen separaten Prozess an: Es wird ein interner HTTP-Aufruf an die Datei wp-cron.php gesendet, die dann die fälligen Cron-Jobs ausführt. Dieses asynchrone Ausführen soll sicherstellen, dass die eigentliche Seitenladung nicht warten muss, bis vielleicht umfangreiche Hintergrundaufgaben abgearbeitet sind. In der Praxis bedeutet es aber dennoch, dass bei einem Seitenaufruf zusätzlicher Overhead entsteht, sobald WP-Cron etwas zu tun hat.

Wichtig zu verstehen ist, dass es nicht kontinuierlich im Hintergrund läuft wie ein echter Cron-Dienst. Es simuliert lediglich feste Zeiten, indem es bei Seitenaufrufen checkt, ob die Zeit für eine Aufgabe gekommen ist. Liegt eine Website beispielsweise brach (keine Besucher, niemand loggt sich ein), dann wird WP-Cron in dieser Zeit gar nicht aktiv – selbst wenn eigentlich ein Task anstünde. Dieses Design führt zu den Hauptproblemen des WP-Cron-Systems: unzuverlässige Timing der Aufgaben und Performance-Einbußen unter bestimmten Umständen. Schauen wir uns diese Probleme genauer an.

Probleme des standardmäßigen WP-Cron-Systems

WP-Cron erfüllt zwar grundsätzlich seinen Zweck, bringt aber zwei große Nachteile mit sich, die gerade in anspruchsvolleren Szenarien zum Tragen kommen: geringere Performance und eingeschränkte Zuverlässigkeit.

Performance-Probleme durch WP-Cron bei hohem Traffic

Auf stark besuchten Websites kann WP-Cron zu einer merklichen Belastung für den Server werden. Der Grund: Bei jedem Seitenaufruf, und seien es hunderte pro Minute, schaut WordPress nach fälligen Tasks. In vielen Fällen ist das völlig überflüssig, denn die meisten geplanten Aufgaben müssen nicht sekündlich geprüft werden. Oft reichen Intervalle von einigen Minuten oder Stunden. Dennoch initiierte WP-Cron in der Standardeinstellung bei jedem Besuch einen Check – was bei hohem Traffic die Serverressourcen unnötig beansprucht.

Ein Beispiel: Du hast ein Backup-Plugin so eingestellt, dass es einmal pro Woche ein Backup erstellt. Mit WP-Cron bedeutet das dennoch, dass bei jedem Seitenaufruf geprüft wird, ob es Zeit für das wöchentliche Backup ist. 99,9 % der Zeit ist das nicht der Fall, aber die Prüfung erfolgt trotzdem immer wieder. Bei einer besucherstarken Seite ergibt das tausende unnötige Überprüfungen täglich, was die Ladezeiten beeinträchtigen kann. Zwar hat WordPress ein rudimentäres Sperrmechanismus eingebaut, der Mehrfachausführungen von wp-cron.php innerhalb von 60 Sekunden verhindert, doch bei sehr hohem Aufkommen oder parallel ablaufenden Aufrufen kann es dennoch zu überschüssigen Cron-Prozessen kommen. Kurzum: Für Websites mit viel Traffic ist das WP-Cron-Konzept ineffizient, weil es zu häufig und ungesteuert läuft.

Unzuverlässige Ausführung geplanter Tasks bei geringem Traffic

Das andere Extrem sind Websites mit wenig Besucherverkehr oder solche, die aggressive Caching-Methoden einsetzen. Hier kann es passieren, dass geplante Aufgaben nicht rechtzeitig oder gar nicht ausgeführt werden. Da WP-Cron eben auf Seitenaufrufe wartet, führt ein Mangel an Besuchern dazu, dass cronpflichtige Aktionen schlicht ausbleiben, bis wieder jemand die Seite besucht.

Stellen wir uns vor, ein Blogpost soll nachts um 2:00 Uhr automatisch veröffentlicht werden. Wenn um diese Uhrzeit niemand die Webseite aufruft – was bei einer wenig frequentierten Seite durchaus vorkommt – wird WP-Cron nicht aktiv, und der Beitrag bleibt unveröffentlicht, bis am Morgen der erste Besucher kommt. Ähnlich verhält es sich mit zeitkritischen Tasks wie Backups oder E-Mail-Versand zu festen Zeiten: Ohne Traffic keine Cron-Action. Auch Seiten-Caching kann es ausbremsen – wenn z.B. ein Full-Page-Cache aktiv ist, werden Besuche oft gar nicht bis zur WordPress-Engine durchgereicht, sodass es gar nicht mitbekommt, dass jemand da war.

Diese Unzuverlässigkeit bedeutet: Man kann sich bei den Standart Einstellungen nicht 100% darauf verlassen, dass eine geplante Aufgabe wirklich zum gewünschten Zeitpunkt ausgeführt wird. WordPress selbst weist darauf hin, dass Verzögerungen auftreten können („wenn um 14:00 Uhr niemand die Seite aufruft, wird der Task eben erst um 17:00 Uhr oder später ausgeführt“). Für viele Anwendungsfälle mag das „irgendwann läuft es schon“ akzeptabel sein, doch gerade bei wichtigen Wartungsaufgaben oder zeitgenauen Veröffentlichungen ist das suboptimal.

Zusammengefasst: Im Auslieferungszustand ist WP-Cron zwar praktisch und für einfache Seiten ausreichend, kann aber bei hoher Last zur Bremse und bei niedriger Last zum Risiko werden. Die gute Nachricht ist, dass es Lösungen gibt, um diese Probleme zu umgehen und WP-Cron zu optimieren.

Du möchtest bessere Performance-Werte? 🔥🚀

Unser Webhosting ist speziell für WordPress optimiert.

Dank garantierter Ressourcen und speziellem Webseiten-Caching können wir deine Webseite ins nächste Level heben 🚀!

Überzeuge dich selbst und buche jetzt unseren Demo-Umzug mit einem personalisierten Vorher/Nachher-Vergleich deiner Webseite!

WP-Cron optimieren: Echte Cronjobs statt WP-Cron verwenden

Die Lösung für die genannten Probleme besteht darin, es nicht mehr bei jedem Seitenaufruf automatisch laufen zu lassen, sondern stattdessen die geplanten Tasks über echte Cronjobs des Servers auszuführen. Mit einem solchen Ansatz laufen die Hintergrundaufgaben unabhängig vom Webseiten-Traffic in festen Intervallen – zuverlässig und kontrolliert. Dadurch werden zum einen Seitenaufrufe entlastet (weil WordPress nicht ständig Cron prüfen muss) und zum anderen Tasks pünktlich ausgeführt, egal ob Besucher online sind oder nicht. Im Folgenden erklären wir Schritt für Schritt, wie man WP-Cron entsprechend umstellt.

WP-Cron in WordPress deaktivieren

Zunächst muss verhindert werden, dass WordPress den Mechanismus bei jedem Seitenaufruf startet. Dies erreicht man durch eine einfache Einstellung in der wp-config.php Datei im Hauptverzeichnis der WordPress-Installation. Durch Hinzufügen der folgenden Zeile wird WP-Cron abgeschaltet:

define('DISABLE_WP_CRON', true);

Diese Konstante sorgt dafür, dass WordPress wp-cron.php nicht mehr automatisch bei Seitenaufrufen aufruft. Wichtig: Bereits geplante Aufgaben bleiben weiterhin in der Datenbank gespeichert – es fehlt nur der automatische Anstoß zu ihrer Ausführung. Mit anderen Worten, WP-Cron ist nun “inaktiv”, bis wir ihn manuell oder durch ein externes Signal starten. Ohne weitere Maßnahmen würden Ihre Cron-Jobs ab diesem Punkt gar nicht mehr laufen. Daher ist der nächste Schritt unerlässlich: einen echten Cronjob einzurichten, der das Ausführen der WP-Cron-Aufgaben übernimmt.

(Hinweis: Nutzer von Managed-WordPress-Hostern oder Admin-Tools können WP-Cron oft auch ohne manuelle Code-Änderung deaktivieren. Beispielsweise bietet Plesk im WordPress Toolkit einen Schalter „Disable wp-cron.php“, der genau diese Einstellung vornimmt.)

Echten Cronjob einrichten (z.B. in Plesk)

Nachdem WP-Cron nicht mehr automatisch bei Besuchern läuft, richten wir nun einen Server-basierten Cronjob ein, der wp-cron.php in regelmäßigen Abständen aufruft. Das Ziel ist, WordPress somit planmäßig „anzustoßen“, die anstehenden Aufgaben auszuführen – und zwar unabhängig davon, ob gerade ein Besucher auf die Seite zugreift oder nicht. Viele Hosting-Panel wie cPanel oder Plesk bieten hierfür eine komfortable Oberfläche. Schauen wir uns die Einrichtung am Beispiel Plesk an.

WP-Cron mit Plesk WordPress Toolkit

Wenn du Plesk verwendest, ist es besonders einfach. Wie oben erwähnt, kannst du im Plesk WordPress Toolkit für Ihre Installation den Schalter „wp-cron.php deaktivieren“ aktivieren. In dem Moment, in dem du das tust, übernimmt Plesk automatisch die weitere Konfiguration. Konkret legt Plesk im Hintergrund eine geplante Aufgabe an, die fortan alle 30 Minuten die WordPress-Cronjobs ausführt. Du musst sich um nichts Weiteres kümmern – WP-Cron läuft nun in diesem festen Intervall regelmäßig im Hintergrund. Falls gewünscht, kannst du diese Intervalle auch anpassen: Über die Plesk-Oberfläche („Geplante Aufgaben“ für die Website) lässt sich der Cronjob bearbeiten und z.B. auf 15 Minuten oder 60 Minuten einstellen. Ein kürzeres Intervall (z.B. alle 5 Minuten) kann für sehr zeitkritische Aufgaben sinnvoll sein, während für kleinere Websites oft sogar ein täglicher Lauf ausreicht.

Manuelle Cronjob-Einrichtung in Plesk

Du kannst einen Cronjob in Plesk auch selbst hinzufügen. Melde dich dazu im Plesk-Panel an und navigiere zu „Geplante Aufgaben“ (manchmal „Scheduled Tasks“ genannt) für die betreffende Domain oder das Webhosting-Paket. Erstelle eine neue Aufgabe und wähle als Typ am einfachsten „URL abrufen“. Dort kannst du die URL zu Ihrem wp-cron.php angeben. Typischerweise ist dies https://Ihre-Domain.de/wp-cron.php – Plesk wird dann diese Adresse in dem von Ihnen festgelegten Intervall aufrufen.

Alternativ lässt sich auch der Aufgabentyp „PHP-Skript“ oder „Befehl“ nutzen, um wp-cron.php direkt per PHP-CLI bzw. mittels wget/curl aufzurufen; die URL-Methode ist jedoch für die meisten Nutzer am einfachsten. Lege nun das gewünschte Zeitintervall fest (z.B. „Alle 30 Minuten“ oder „Täglich um 02:00“) und speichere die Aufgabe. Ab sofort erledigt der Server-Cron diese Aufrufe. WordPress wird also zu den festgelegten Zeiten wp-cron.php ausführen und dadurch alle fälligen Tasks abarbeiten – unabhängig vom Besucherverkehr, zuverlässig und planbar.

Durch die Umstellung auf einen echten Cronjob wird WP-Cron nun so ausgeführt, wie man es erwartet: pünktlich nach Zeitplan und nicht mehr bei jedem Seitenbesuch. Die Performance deiner Website profitiert davon, weil reguläre Besucher nicht mehr die Cron-Prüfungen triggern. Gleichzeitig gewinnst du Zuverlässigkeit, denn auch ohne Traffic laufen geplante Aktionen zur vorgesehenen Zeit ab. Viele Webmaster berichten von spürbar schnelleren Ladezeiten und stabileren Abläufen nach dem Umstieg auf Server-Cronjobs für WordPress.

Fazit

WP-Cron ist ein praktisches Werkzeug, um in WordPress automatisch Aufgaben zeitgesteuert ausführen zu lassen. Für kleinere Websites und grundsätzliche Features (Updates, geplante Posts etc.) funktioniert das eingebaute System meist ohne weiteres Zutun. Sobald jedoch Performance oder Timing-Kritikalität ins Spiel kommen, stößt WP-Cron schnell an Grenzen. Ungesteuerte Cron-Aufrufe bei jedem Seitenaufruf können die Performance bremsen, während fehlende Besucher dazu führen können, dass wichtige Tasks verzögert stattfinden. Zum Glück lässt sich WordPress relativ leicht optimieren, indem man WP-Cron versteht und gezielt anpasst: Durch das Deaktivieren der automatischen Cron-Ausführung und das Einrichten eines echten Cronjobs (beispielsweise über Plesk) erhält man das Beste aus beiden Welten – verlässliche, planmäßige Tasks und eine performant laufende Website.

Hey 👋
Freut uns, dich kennenzulernen
!

Melde dich an, um 1x im Monat interessante News zu erhalten.

Wir spammen nicht! Lese unsere Datenschutzerklärung für weitere Informationen.

Nach oben scrollen