WordPress Lernen

Echten Cronjob in WordPress einrichten (für wp-cron.php)

Tobias Steinmann
Echten Cronjob in WordPress einrichten (für wp-cron.php)

Das Cron System in WordPress sorgt für die zeitgesteuerte Ausführung von verschiedenen Abläufen. So sucht WordPress im Hintergrund nach Aktualisierungen oder veröffentlicht automatisch geplante Beiträge. Bei einer Standard WordPress Installation wird jedoch nur ein Pseudo-Cron eingerichtet, der mitunter unzuverlässig arbeitet. Hier erfährst du, wie du WordPress auf einen echten Cronjob umstellen kannst.

Was ist ein Cronjob?

Das Wort Cron kommt aus dem Griechischen und steht für den Begriff Zeit. Ein Cronjob ist also eine Aufgabe, welche zeitgesteuert ausgeführt wird. Im Normalfall sind das sich regelmäßig wiederholende Aufgaben für Aktualisierungen oder Wartungszwecke. Auch die automatische Veröffentlichung von geplanten Beiträgen gehört dazu.

wp-cron.php in WordPress

In WordPress sind alle zeitgesteuerten Tasks in der Datenbank hinterlegt und werden von der Datei wp-cron.php ausgeführt. Bei einem echten Cronjob würden die anstehenden Tasks nun regelmäßig in fest definierten Abständen aufgerufen werden. Bei einer Standard Installation von WordPress wird die wp-cron.php jedoch nicht automatisch ausgeführt. Hier erfolgt die Ausführung nur dann, wenn ein Besucher die Webseite aufruft.

WordPress pseudo-Cronjobs

Da WordPress die zeitgesteuerten Tasks standardmäßig nur dann ausführt, wenn jemand die Webseite aufruft, handelt es sich hier nur um einen pseudo-Cronjob.

Cron Probleme in WordPress

Der standardmäßige Umgang von WordPress mit zeitabhängigen Aufgaben kann unter Umständen zu folgenden Problemen führen:

  • Geplante Beiträge werden nicht veröffentlicht
  • Externe Datenquellen werden nicht aktualisiert
  • Updates werden nicht durchgeführt

Vor allem auf Websites mit sehr wenigen Besuchern bzw. Aufrufen kommt es regelmäßig vor, dass anstehende Tasks nicht ausgeführt oder übersprungen werden. Das mag bei der Suche nach WordPress Updates nicht so schlimm sein. Wenn das angekündigte Gewinnspiel aber nicht wie geplant online geht, wäre dies schon sehr ärgerlich. Um solchen Schwierigkeiten aus dem Weg zu gehen, kannst du statt dem pseudo-Cronjob einen echten Cronjob einrichten.

Echten Cronjob einrichten

Ein echter Cronjob wird in fest definierten Zeitabständen ausgeführt, unabhängig wie viele Besucher deine Webseite zu den unterschiedlichen Tageszeiten aufrufen. Um das zu erreichen, muss die WordPress Datei wp-cron.php von einer unabhängigen Instanz aufgerufen werden. Dazu gibt es das Crontab System im Betriebssystem des Webservers, auf dem dein WordPress läuft.

Für eine zuverlässige Ausführung der geplanten Tasks muss ein Cronjob bei deinem Webhoster eingerichtet werden, der die wp-cron.php regelmäßig aufruft. Die meisten Webhoster bieten heutzutage Cronjobs in ihren Pakten an. Die Einrichtung erfolgt über die Administrationsoberfläche deines Hosters.

Die Oberfläche zur Einrichtung unterscheidet sich dabei je nach Anbieter, die grundlegenden Angaben sind aber überall ähnlich. Hier wird die Einrichtung beim Webhoster All-Inkl beschrieben. Solltest du einen anderen Anbieter nutzen, suche in dessen Backend nach einem Menüpunkt mit der Bezeichnung Cronjob, Taskplaner oder Zeitgesteuerte Scripte.

Cronjob bei All-Inkl einrichten

Um die wp-cron.php unabhängig vom Aufruf der Webseite auszuführen, kannst du diese bei All-Inkl durch einen Cronjob regelmäßig aufrufen lassen. Logge dich dazu in das Kundenadministrationssystem (KAS) ein und rufe den Menüpunkt Tools > Cronjobs auf und klicke auf Cronjob anlegen.

In der Eingabemaske musst du nun folgende Einträge vornehmen:

  • Protokoll/Pfad: https:// deine-domain.de/wp-cron.php
  • Beschreibung: Beliebige Angabe (taucht in der Cronjob Übersicht auf)
  • Ausführungsintervall: minütlich, alle 5 Minuten
WordPress Cronjob bei All-Inkl anlegen

Die zusätzlichen Einstellungen sind für diesen Einsatzfall meist nicht relevant: Hier lassen sich seltenere Aufrufe realisieren oder WordPress Installationen hinter einem HTTP Passwortschutz aufrufen. Einzig die Zeit beim Ausführungsintervall ist nicht fest vorgeschrieben.

Je nachdem, wie viele Plugins und Anwendungen du nutzt, die im Hintergrund Aufgaben oder Aktualisierungen ausführen, kannst du das Intervall auch erhöhen. Ein Wert zwischen 5 und 30 Minuten ist in den meisten Fällen sinnvoll. Nach einem Klick auf den Speichern Button ruft nun der All-Inkl Server die wp-cron.php regelmäßig auf.

WordPress Cronjob deaktivieren

Nach dem Anlegen des Cronjobs beim Webhoster wird die wp-cron.php auch allerdings immer noch beim Aufruf deiner Webseite ausgeführt. Um die doppelte Ausführung zu verhindern, solltest du den pseudo-Cronjob in WordPress deaktivieren. Logge dich dazu etwa per FTP auf deinem Webspace ein und rufe die Datei wp-config.php mit einem Texteditor auf.

Hier müssen möglichst am Anfang der Datei nach dem öffnenden PHP Tag <?php folgende zwei Zeilen eingefügt werden:

/** Disable virtual cron */
define('DISABLE_WP_CRON', true);
Weiterer Vorteil vom echten Cronjob

Nach dem Deaktivieren des pseudo-Cronjobs reduziert sich auch die Ladezeit deiner Seite ein wenig. Alle Hintergrundaufgaben werden jetzt durch den echten Cronjob ausgeführt und nicht mehr beim Aufruf der Seite.

Fazit

Standardmäßig werden zeitgesteuerte Aufgaben in WordPress nur bei regelmäßigen Aufrufen der Webseite ausgeführt. Das führt häufig zu Problemen, wenn etwa geplante Beiträge nicht veröffentlicht werden. Mit der Einrichtung eines echten Cronjobs bei deinem Webhoster wird die wp-cron.php wirklich regelmäßig und zuverlässig ausgeführt. Die Cron Probleme gehören damit der Vergangenheit an.

Das könnte dich auch interessieren