Jeder kann die geplanten Aufgaben Ihrer Website über wp-cron.php starten
Allgemeine Anleitung. Öffnen Sie diesen Artikel aus Ihrem PageCheck-Bericht, um ihn mit der Adresse Ihrer Website und den Regeln für ihren Webserver ausgefüllt zu sehen.
Was es ist
WordPress führt seine geplanten Aufgaben – geplante Beiträge veröffentlichen, E-Mails senden, Backups, Plugin-Updates – über die Datei wp-cron.php aus. Standardmäßig startet es diese Datei selbst, während Besucher die Website aufrufen, deshalb muss die Datei Anfragen aus dem Internet beantworten.
Was falsch ist
Die Datei beantwortet Anfragen von jedem, sodass jeder, auch Bots, die geplanten Aufgaben der Website so oft starten kann, wie er will. Jede Anfrage lädt WordPress vollständig, daher sind wiederholte Anfragen ein billiger Weg, den Server zu belasten und die Website zu verlangsamen. Durch Besuche gestartete Aufgaben sind außerdem unzuverlässig: Auf einer ruhigen Website laufen sie zu spät.
So beheben Sie es
Gehen Sie in dieser Reihenfolge vor: Wird die Datei zuerst gesperrt, bleiben geplante Beiträge und E-Mails liegen.
1. Die geplanten Aufgaben vom Server aus ausführen. Legen Sie im Hosting-Control-Panel eine geplante Aufgabe (Cronjob) an, die alle 5 Minuten läuft:
-
Plesk: Websites & Domains → Scheduled Tasks → Add Task, Typ „Run a PHP script“, Skript
httpdocs/wp-cron.php. -
cPanel: Cron Jobs, Befehl
cd /home/USER/public_html && php wp-cron.php(mit Ihrem eigenen Kontonamen und Ordner). -
Ein Server mit WP-CLI:
wp cron event run --due-now --path=/path/to/site.
Führen Sie die Datei mit PHP auf dem Server aus, nicht durch Aufruf ihrer Adresse über das Internet (wget oder curl): Schritt 3 blockiert das. Managed-WordPress-Hoster haben oft schon eine Server-Aufgabe – fragen Sie dort nach.
2. Verhindern, dass WordPress sie bei Seitenaufrufen startet.
Fügen Sie diese Zeile in die wp-config.php ein, über der Zeile /* That's all, stop editing! */:
wp-config.php
define( 'DISABLE_WP_CRON', true );
3. Die Datei nach außen sperren. Verwenden Sie die Regel für Ihren Webserver (Ihr Hoster kann Ihnen sagen, welcher es ist):
Apache oder LiteSpeed: in der Datei .htaccess im Hauptordner der Website, über der Zeile „# BEGIN WordPress“
<Files "wp-cron.php">
Require all denied
</Files>nginx: im server-Block der Website
location = /wp-cron.php {
deny all;
} Bei Cloudflare können Sie sie stattdessen dort sperren: Security → WAF → Custom rules, eine Regel „URI Path equals /wp-cron.php“ mit der Aktion Block.
4. Prüfen.
Öffnen Sie https://example.com/wp-cron.php: Die Adresse sollte jetzt mit „Forbidden“ (403) antworten. Planen Sie einen Testbeitrag einige Minuten im Voraus und prüfen Sie, dass er pünktlich erscheint, dann führen Sie diese Prüfung erneut aus.
Close wp-cron.php on my WordPress site to requests from the internet, without breaking scheduled tasks. https://example.com/wp-cron.php currently answers anyone.
The web server type is not known; check which one the site runs on.
Steps, in this order:
1. Set up a server-side scheduled task that runs WordPress cron every 5 minutes with PHP on the server (php wp-cron.php from the site's folder, or wp cron event run --due-now). Not wget/curl over HTTP: step 3 would block it.
2. Add define( 'DISABLE_WP_CRON', true ); to wp-config.php above "That's all, stop editing!".
3. Deny HTTP access to /wp-cron.php: on Apache/LiteSpeed a <Files "wp-cron.php"> Require all denied </Files> block in .htaccess above # BEGIN WordPress; on nginx location = /wp-cron.php { deny all; } in the server block.
4. Verify: /wp-cron.php answers 403, wp cron event list shows no overdue events after 10 minutes, and a post scheduled a few minutes ahead is published on time.
Tell me exactly which files you changed and what to check in the hosting control panel.
Resources:
- Hooking WP-Cron into the system task scheduler (WordPress.org): https://developer.wordpress.org/plugins/cron/hooking-wp-cron-into-the-system-task-scheduler/
Betreff: example.com – bitte geplante WordPress-Aufgaben vom Server aus ausführen und wp-cron.php sperren Guten Tag, Eine Website-Prüfung (PageCheck) hat ergeben, dass https://example.com/wp-cron.php jedem antwortet, sodass jeder die geplanten Aufgaben unserer Website starten und den Server belasten kann. Bitte in dieser Reihenfolge: 1. Einen Server-Cronjob anlegen, der wp-cron.php alle 5 Minuten mit PHP ausführt. 2. define( 'DISABLE_WP_CRON', true ); in die wp-config.php eintragen. 3. Webanfragen an wp-cron.php sperren (in der .htaccess, der nginx-Konfiguration oder der Firewall). 4. Prüfen, dass geplante Beiträge und E-Mails weiter pünktlich rausgehen. Quellen: - Hooking WP-Cron into the system task scheduler (WordPress.org): https://developer.wordpress.org/plugins/cron/hooking-wp-cron-into-the-system-task-scheduler/ Vielen Dank!
Prüfen Sie Ihre Website, um zu sehen, ob sie dieses Problem hat. Website prüfen