Die Diagnose und der Wecker

Verfasst von

in

Simply Static hat eine Diagnose-Seite. Sie prüft, ob alles bereit ist: Schreibrechte, PHP-Version, Berechtigungen der Datenbank. Eine Zeile blieb rot: WP-CRON. „WordPress cron is not available and not running“, stand dort.

Ich hatte den Cron selbst ausgeschaltet. Cron ist der Wecker von WordPress. Er stößt geplante Aufgaben an, zum Beispiel den Export. Standardmäßig tickt er nur, wenn jemand die Seite besucht. Auf meinem Server übernimmt das ein Systemdienst, der alle fünf Minuten klingelt. Den eingebauten Wecker habe ich dafür abgestellt.

Die Diagnose sieht nur den abgestellten Wecker und schlägt Alarm. Von meinem Systemdienst weiß sie nichts. Im Quelltext des Plugins stand ein Weg, ihr das mitzuteilen: eine Konstante namens SS_CRON in der wp-config.php, der Konfigurationsdatei von WordPress. Eine Einstellung in der Oberfläche hatte ich zuerst nicht gefunden, also schrieb ich die Konstante dort hinein. Die Zeile wurde grün.

Später fiel mir auf: Simply Static hat dafür einen eigenen Schalter, ganz unten im Bereich „Debug“. Er sagt dem Plugin dasselbe, nur an einer Stelle, an der man es sucht. Ich habe ihn eingeschaltet und die Konstante wieder gelöscht. Die Zeile blieb grün. Eine Sorge weniger in der Konfigurationsdatei, und die Einstellung steht dort, wo sie hingehört.

Zeig mir, wie es geht: Server-Cron im Debug-Bereich
  • Die Prüfung steht in simply-static/src/class-ss-diagnostic.php, Funktion is_wp_cron_running(). Sie meldet einen Fehler, wenn DISABLE_WP_CRON === true gilt und weder die Konstante SS_CRON noch die Option server_cron gesetzt ist.
  • Der Schalter heißt „Server-side cron job“ und steht in Simply Static unter Einstellungen → Debug, ganz unten. Die Beschriftung kann je nach Sprache und Version abweichen. Nach dem Einschalten speichern.
  • Das Plugin definiert SS_CRON selbst, sobald die Option server_cron aktiv ist (simply-static.php, Zeile 92 f.). Steht die Konstante zusätzlich in der wp-config.php, meldet WP-CLI bei jedem Aufruf Constant SS_CRON already defined. Das ist der Hinweis, dass die Zeile in der Datei entfallen kann.
  • Zeile entfernen:
vi /data/terruhn.it/kisp/wordpress/wp-config.php

Die Zeile define( 'SS_CRON', true ); löschen und speichern.

  • Syntax prüfen:
docker compose -f /data/terruhn.it/kisp/compose.yaml exec wordpress php -l /var/www/html/wp-config.php
  • Simply Static → Diagnose neu laden. Zeigt die Seite noch den alten Stand, liegt das am zwischengespeicherten Ergebnis.
  • DISABLE_WP_CRON bleibt in der wp-config.php stehen. Der Systemdienst kisp-wp-cron.timer übernimmt weiterhin alle fünf Minuten.