Geplante Beiträge zeigen "Missed Zeitplan"
Die Veröffentlichungszeit verging und nichts passierte. WP-Cron ist keine Uhr – sie läuft, wenn eine Anfrage eintrifft, und keine Anfrage eingetroffen ist.
Missed schedule
WP-Cron wird durch Seitenladungen ausgelöst, so dass eine ruhige Site nichts hat, um sie auszulösen. Listen Sie die fälligen Ereignisse auf: Wenn sie in der Vergangenheit mit einem Zeitstempel in die Warteschlange gestellt wurden, ist der Zeitplan in Ordnung und der Auslöser fehlt, und ein echter Systemcron behebt ihn dauerhaft.
Die wahrscheinlichsten Ursachen zuerst.
Gehen Sie die Liste der Reihe nach durch. Prüfen Sie jede Ursache, bevor Sie etwas ändern, da die Lösungen unterschiedlich sind und eine Vermutung mehr Zeit kostet als ein Befehl.
| Ursache | So prüfen Sie es | Lösung |
|---|---|---|
| Kein Traffic zur geplanten Zeit | Fällige Ereignisse häufen sich mit vergangenen Zeitstempeln und laufen dann alle sofort, wenn Sie eine Seite selbst laden. | Fahren Sie cron vom Betriebssystem in einem festen Intervall anstelle von Besuchern, so dass die Warteschlange bearbeitet wird, ob jemand auf der Website ist oder nicht. |
| WP-Cron ist deaktiviert und nichts hat es ersetzt | DISABLE_WP_CRON ist wahr in wp-config.php, und keine geplante Aufgabe auf dem Server ruft wp-cron.php auf. | Hinzufügen des System-Cron-Eintrags, den die Konstante annimmt. Deaktivieren des Besucherauslösers ohne Hinzufügen eines Ersatzes stoppt jede geplante Aufgabe auf der Website und nicht nur die Veröffentlichung. |
| Die Loopback-Anforderung ist fehlgeschlagen | Site Health berichtet, dass die Site keine Loopback-Anfrage abschließen konnte. WP-Cron spawnt sich selbst über HTTP, so dass es nicht ausgeführt werden kann, wenn die Site sich nicht selbst erreichen kann. | Beheben Sie zuerst den Loopback - er blockiert Cron, Plugin-Updates und das automatische Speichern des Editors. wp-cron.php durch die Befehlszeile aufzurufen, macht HTTP vollständig zu umgehen. |
| Die Zeitzone der Website ist nicht das, was Sie denken | Posts veröffentlichen, aber eine Stunde oder mehrere off. Vergleichen Sie die WordPress Timezone Einstellung mit der Server-Uhr. | Stellen Sie die Zeitzone auf eine benannte Stadt statt auf einen UTC-Offset, so dass die Sommerzeit gespart wird. Ein Offset ist eine feste Zahl und geht zweimal im Jahr schief. |
Schritt für Schritt zur Lösung.
Die Befehle setzen WP-CLI und Shell-Zugriff voraus. Jeder Schritt erklärt, was er tut, damit Sie ihn bei Bedarf im Dashboard oder per SFTP ausführen können.
Sehen Sie, ob Ereignisse in der Warteschlange und überfällig sind
Das ist die Trennung: Überfällige Ereignisse bedeuten, dass die Planung funktioniert hat und nichts in der Warteschlange steht.
wp cron event list --fields=hook,next_run_relative,status
Führen Sie die Warteschlange von Hand
Wenn der Rückstand löscht, war der Zeitplan nie das Problem und Sie suchen nach einem Auslöser.
wp cron event run --due-now
Schalten Sie den besuchergesteuerten Trigger aus
Fügen Sie dies zu wp-config.php hinzu. Allein macht es die Dinge noch schlimmer, also machen Sie den nächsten Schritt in derselben Sitzung.
define( 'DISABLE_WP_CRON', true );
Geben Sie ihm einen echten Zeitplan
Alle fünf Minuten reichen für die Veröffentlichung und schonend auf einem kleinen Server. Verwenden Sie WP-CLI statt curl, so dass keine HTTP-Anfrage involviert ist.
*/5 * * * * cd /path/to/site && wp cron event run --due-now --quiet
Bestätigen Sie die Zeitzone, bevor Sie Cron erneut beschuldigen
Ein Post, der zuverlässig, aber zur falschen Stunde veröffentlicht, ist ein Uhrenproblem, kein Warteschlangenproblem.
wp option get timezone_string date
Darum kümmert sich die Plattform.
Cron wird von der Plattform in einem festen Intervall anstatt von Besuchern gesteuert, und der Besucherauslöser wird ausgeschaltet, so dass ein für 3 Uhr morgens geplanter Beitrag um 3 Uhr morgens auf einer Website ohne Nachtverkehr veröffentlicht wird. Da der Läufer die Plattform ist und keine HTTP-Anfrage, die die Website an sich selbst stellt, hört ein fehlgeschlagenes Loopback nicht stillschweigend auf zu veröffentlichen.
Häufige Fragen.
Warum hat jeder verpasste Post sofort veröffentlicht, als ich die Website geöffnet habe?
Ist ein Plugin, das "verpasste Zeitpläne korrigiert" genug?
Wie oft sollte das System cron laufen?
Beeinflusst das etwas anderes als Posts?
War es keiner davon?
Diese Fehler können im Browser ähnlich aussehen.