Knowledge Base
WordPress Cron Missing Schedule Error: How to Fix It
The “missing schedule” error in WordPress means a scheduled post or task did not run when WP-Cron tried to fire it. It almost always comes down to WP-Cron being unable to trigger itself, usually because the site cannot make a loopback request to its own URL. The fix is either to repair the loopback or to switch WP-Cron off and run it from a real server cron job instead.

Key facts
- WP-Cron is not a real cron job. It only runs when someone (or something) loads a page on the site.
- The “missing schedule” label appears on a post when its scheduled publish time passed but WP-Cron did not fire.
- Low-traffic sites are most affected, because nothing loads a page to trigger the scheduler.
- Setting `DISABLE_WP_CRON` to `true` and adding a server cron job is the most reliable fix.
- A blocked loopback request, often caused by caching, a firewall, or basic auth, is the most common root cause.
Why does WordPress show “missing schedule”?
WP-Cron works by checking, on each page load, whether any scheduled tasks are due, and if so firing them via a loopback HTTP request to wp-cron.php. If that loopback request fails, or if no page loads near the scheduled time, the task simply never runs and WordPress flags the post as “missing schedule”. It is not corruption and it is not a plugin conflict in most cases. It is a timing and connectivity problem.
We see this most on small business sites with light traffic. A blog post set to go live at 9am on a quiet site can sit there until the next visitor arrives, which might be hours later.
How do you fix the missing schedule error?
The quick fix is to load the site yourself, which forces WP-Cron to run and clears any backlog of due tasks. That is a band-aid, not a cure. The durable fix is to take the scheduler off page loads and put it on a proper system cron.
Add this line to wp-config.php, above the “stop editing” comment:
define('DISABLE_WP_CRON', true);
Then create a server-side cron job to call the file on a fixed schedule. On most Linux hosts a crontab entry every five minutes does the job:
*/5 * * * * wget -q -O - https://yourdomain.com.au/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Now the scheduler fires on a clock, not on traffic, and the “missing schedule” warnings stop.
What if the loopback request is being blocked?
If you want to keep WP-Cron on but it still fails, the cause is usually a blocked loopback request. Check Tools then Site Health in the WordPress admin; it reports loopback failures directly. Common culprits are a page cache or CDN intercepting the wp-cron.php call, a server firewall blocking the site from reaching itself, or HTTP basic auth on a staging site that the loopback cannot pass. Whitelisting wp-cron.php in the cache and confirming the server can resolve its own domain usually clears it.
Frequently asked questions
Is the missing schedule error a sign my site is hacked?
No. It is a scheduling problem, not a security one. It means WP-Cron did not fire when a task was due, almost always because of low traffic or a blocked loopback request. It does not indicate a compromise.
Will disabling WP-Cron break anything?
Not if you replace it with a real cron job. Disabling WP-Cron only stops it firing on page loads; your scheduled posts, backups, and plugin tasks still run as long as the server cron calls wp-cron.php on a schedule. Skipping the replacement cron is what causes problems.
How often should the server cron run?
Every five minutes is a sensible default for most business sites. More frequent runs add load for little benefit, and less frequent runs risk noticeable delays on time-sensitive scheduled posts. Adjust if you have tasks that need tighter timing.
If your business runs on WordPress and you would rather not be the one editing wp-config.php at 9pm, that is the kind of quiet maintenance we handle for clients. Happy to take a look at your hosting setup if it would help.

About the author
Brett Muscio is the Director of 4iT Support Pty Ltd, a managed services provider based in Castle Hill, NSW. He works with SME clients across Sydney, Melbourne, and Brisbane on Microsoft 365, cybersecurity, networking, and web and server maintenance, with on-site support across the Sydney metro area and remote delivery nationally. Connect on LinkedIn.



