Overview #
WordPress has its own pseudo-cron: WP-Cron that runs scheduled events (updates, backups, email queues). By default it fires on website visits, which is unreliable: low-traffic sites starve it, and busy sites get unpredictable loads. When cron events don’t complete, scheduled maintenance silently stops.
The Alert #
CRON_STUCK (warning): WordPress cron events are not completing. Scheduled maintenance and updates may be delayed.
WP-Cron vs System Cron #
| WP-Cron (default) | System Cron (recommended) | |
|---|---|---|
| Trigger | Fires on visitor requests | Fires on a real server schedule |
| Reliable? | No, depends on traffic | Yes, runs regardless of visits |
| Load | Random spikes on busy sites | Predictable timing |
| Config | Nothing to do | DISABLE_WP_CRON + server cron job |
Checking for Stuck Events #
WP-CLI:
wp cron event list # all scheduled events + next run times
wp cron event list --status=due # overdue events
If overdue events exist and never run, cron is stuck.
The Fix: Real System Cron #
- Disable WP-Cron in
wp-config.php:
define('DISABLE_WP_CRON', true);
- Add a real cron job on the server (runs every 5 minutes):
*/5 * * * * php /path/to/wp-cron.php
or via wp-cli:
*/5 * * * * wp cron event run --due-now --path=/path/to/wp
- Clear stuck events (after fixing the trigger):
wp cron event run --due-now
- Verify:
wp cron event list --status=dueshould come back empty on the next run.
What Blocks Cron #
- REST loopback blocked: WP-Cron (and health checks) rely on loopback when triggered via HTTP; see REST API Loopback Blocked
- No traffic: visit-triggered cron on a quiet site
- Long-running jobs: a job exceeding timeouts never completes and blocks the queue
- Plugin conflicts: a plugin registering failing events
What You Should Do #
Nothing technical. If scheduled things have been missed (digests, backups, renewals), mention it and we re-trigger them after clearing the queue.
The Xponent Standard #
Xponent configures WP-Cron to run on a real system cron schedule (not visitor-triggered): the production-correct setup. Stuck cron is rare on the stack and flagged immediately when it happens. On managed sites we fix it for you.