Cron-Jobs belasten zusätzlich die Ressourcen des Webservers und deshalb bieten einige Webhoster ihren Kunden die Möglichkeit, einen eigenen Cron-Job einzurichten, erst gar nicht an.
Damit WordPress trotzdem zeitgesteuert Aufgaben ausführen kann, wir ein „Pseudo-Cron“ verwendet. Damit ist gemeint, dass WordPress immer, wenn eine Webseite abgerufen wird, kurz nachschaut, ob zwischenzeitlich Aufgaben ausgeführt werden sollten. Diese werden dann direkt nachgeholt, wobei es dabei zu erheblichen Verzögerungen kommen kann: Wenn du die Veröffentlichung einer Seite für den nächsten Tag 12:00 Uhr mittags planst, aber der nächste Webseitenbesucher erst am Nachmittag um 15:00 Uhr vorbeischaut, wird die Seite auch erst nach 15:00 Uhr veröffentlicht. Der Besucher um 15:00 Uhr sieht die Seite noch nicht, weil sein Besuch erst die Veröffentlichung auslöst. Besucht er die Website wenige Minunten später, kann er sich aber auch über die neue Seite freuen.
Nun soll es Anbieter geben, die eine Einrichtung eines Cron-Jobs erlauben. In diesen Fällen legst du (meistens im Kundenmenü des Webhosters) einen Cronjob so an, dass z.B. alle 15 Minuten die Webseite wp-cron.php
aufgerufen wird. Dadurch wird wieder nachgeschaut, ob zwischenzeitlich Aufgaben ausgeführt werden sollten – nur sind die Abstände in dem von dir geplanten Intervall. (Das sollte nicht zu eng getaktet werden, weil die Performance der Website leidet und sich der Webhoster wahrscheinlich auch irgendwann meldet und nachfragt, ob das nötig ist.) Wenn du einen eigenen Cronjob eingerichtet hast, solltest du noch den Pseudo-Cron deaktivieren. Wie das geht, steht in diesem lesenswerten Beitrag: So deaktivierst du WP-Cron (wp-cron.php) für schnellere Leistung
Ganz unabhängig davon kannst du auf deinem Webserver neben WordPress weitere PHP-Skripte installieren, auch solche die eine E-Mail versenden. Und die kannst du natürlich auch per Cron-Job aufrufen. Das Skript
<?php
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
würde dann an den E-Mail-Empfänger nobody@example.com
eine E-Mail mit Betreff the_subject
und Nachrichtentext hello
versenden – wenn’s sein muss, auch viertelstündig.
Mit WordPress hat das alles herzlich wenig zu tun und für die weitere Ausschmückung der E-Mail empfehlen ich einen gut gemachten PHP-Kurs (auf Youtube gibt es z.B. einige wirklich empfehlenswerte Kurse).
Wenn du aber ein Plugin schreibst, kannst du die beschriebene Cron-Funktionalität auch nutzen, indem du die Schedule-API verwendest. Die WordPress-Dokumentation hält dazu eine Beschreibung auf der Seite Cron und Folgeseiten bereit.