How to Fix Cron Events Missing Their Schedules
The WP-Cron system in WordPress is not a “real” cron system, which means events may not run exactly according to their schedule because the system relies on regular traffic to the website in order to trigger scheduled events.
Reasons WP-Cron events can miss their schedule
- Low traffic websites may not trigger the event runner often enough
- A fatal error caused by a plugin or theme may break the event runner
- A plugin or theme may intentionally or unintentionally break the event runner
- BasicAuth, a firewall, or other access restrictions may block the event runner
- A problem with your web hosting or web server may break the event runner
- The
DISABLE_WP_CRON
configuration constant is set but no alternative cron runner has been put in place - Long-running events may temporarily block the event runner
- High traffic websites may suffer from sequential processing issues that block the event runner
How can I fix this?
There’s no single solution to this problem. Your best approach is to:
- Deactivate other plugins on your site one by one to see if any of them are causing things to break. Start with ones that you’ve recently updated or recently installed.
- Contact your web hosting provider as they commonly have experience dealing with problems with WP-Cron. They’ll often recommend setting up a server-level cron job to trigger the WP-Cron event runner.
Articles with more information
Host-Specific Instructions
- SiteGround: How to replace WP-Cron with a real cron job
- Pantheon: Configuring and optimizing the WP-Cron feature
- WP Engine: WP-Cron and WordPress event scheduling
- Kinsta: How to Disable WP-Cron for Faster Performance