Schon häufiger hatte ich Nachfragen zu „unpünktlichen“ Beiträgen. In diesem Beitrag möchte ich die Gründe beleuchten und (natürlich 😉 ) Lösungen anbieten.
Fehlerbeschreibung und Grundlagen
Zuerst einmal zum Ablauf: die Veröffentlichung von Beiträgen kann geplant und damit in die Zukunft verschoben werden. Allerdings ist nicht garantiert, dass ein so geplanter Beitrag wirklich exakt auf die Minute pünktlich veröffentlicht wird.
Hintergrund ist die Funktionsweise dieser Beitragsveröffentlichung. Um geplante Aufgaben durchzuführen, gibt es im Linux-Bereich die sogenannten Cronjobs. Mit diesen kann man Aufgaben zu einem bestimmten Zeitpunkt (bzw. in einem bestimmten Zeitrahmen) starten lassen. Solche Cronjobs kann man theoretisch auf jedem Webserver einrichten, jedoch haben die meisten Website-Betreiber innerhalb ihrer Hosting-Pakete keinen Zugriff auf Cronjobs.
Deswegen hat WordPress ein eigenes, cronjob-ähnliches System, namentlich wp-cron.php.
Wann immer eine Seite der Website aufgerufen wird, egal ob von einem echten Besucher, einer Suchmaschine oder einem anderen Bot, wird neben dem normalen Seitenaufruf auch intern wp-cron.php aufgerufen. Das PHP-Skript prüft die Einträge der geplanten Aufgaben in der Datenbank und führt alle Aufgaben aus, deren Ausführungszeitpunkt mittlerweile erreicht ist. Dazu gehört auch die Veröffentlichung von geplanten Beiträgen.
Problemanalyse
Und hier liegt auch das Problem: wird die Website im geplanten Zeitraum nicht besucht, findet automatisch auch keine Veröffentlichung statt. Erst beim nächsten Besuch einer Seite der WordPress-Installation wird wp-cron angestoßen und veröffentlicht den gewünschten Beitrag.
Das Problem kann sich auch noch in anderer Form äußern. Veröffentlicht der Autor seine Beiträge auch zeitgesteuert in Social-Media-Kanälen wie zum Beispiel Facebook, wird zwar ein Post auf Facebook veröffentlicht, der darin befindliche Link funktioniert aber nicht und zeigt einen 404-Fehler an.
Lösungsansätze
Das Problem mit den Facebook-Posts besteht nur, wenn die Veröffentlichungsplanung für Facebook außerhalb von WordPress mit einem anderen Tool geschieht. Werden die FB-Posts auch über WordPress (zum Beispiel mit einem Plugin wie Social Network Auto-Poster) gesteuert, dann ist auch diese Facebook-Veröffentlichung von einem Seitenbesuch abhängig und wird folglich ebenso wenig ausgeführt wie die Beitragsveröffentlichung selbst.
Somit kann es also ratsam sein, hier auf eine Plugin-Lösung umzusteigen, da damit die Veröffentlichung auf Facebook auch erst dann geschieht, wenn der Beitrag wirklich veröffentlicht ist.
Eine andere Möglichkeit besteht darin, die eigene Website zeitgesteuert von außen aufrufen zu lassen, um einen wp-cron-Aufruf zu forcieren. Einfachheitshalber ruft man direkt wp-cron.php von extern auf. Das geht zum Beispiel mit kostenlosen Cronjob-Diensten wie etwa cronjob.de oder cron-job.org (Übersicht diverser Anbieter). Hier kann man den Aufruf einer URL bis zu einmal pro Minute auslösen. Wird die wp-cron.php so also minütlich aufgerufen, werden auch alle anstehenden Aufgaben wie Beitragsveröffentlichungen minutengenau ausgeführt.
Der Aufruf der wp-cron.php von außerhalb sieht so aus:
http://www.deineseite.de/wp-cron.php