A WordPress missed schedule error means a post reached its scheduled time but did not publish. First, publish the stuck post manually if it should already be live. Then check the site timezone and whether WordPress cron is being blocked or delayed.
WordPress uses WP-Cron for scheduled posts and other background tasks. Unlike a server cron daemon, WP-Cron runs when the site receives visits. Low traffic, blocked loopback requests, heavy caching, maintenance mode, or hosting restrictions can stop scheduled posts from publishing on time.
Publish the missed post
Open Posts in the WordPress dashboard and find the post marked Missed Schedule.
If the post should already be public, open it and click Publish. Do this before changing cron settings, because WordPress will not automatically publish the missed post until the scheduled event runs again.
If the scheduled time looks wrong, go to Settings > General > Timezone. Use a city-based timezone, such as New York or London, instead of a fixed UTC offset when possible. City timezones handle daylight saving changes more reliably.
Check whether WordPress cron is disabled
Open your site files through your hosting file manager or SFTP and check wp-config.php.
Before editing this file, make a backup copy. A typo in wp-config.php can take the site offline.
Look for this line:
define( 'DISABLE_WP_CRON', true );
If that line exists, WordPress will not run its normal visit-triggered cron. This is fine only when your host or server already has a scheduled task calling WordPress cron.
If there is no replacement cron job, either remove the line or change it to:
define( 'DISABLE_WP_CRON', false );
Save the file, then schedule a test post a few minutes ahead and check whether it publishes on time.
Check what could be blocking cron
WP-Cron needs WordPress to call its own cron endpoint. If that request is blocked, scheduled posts and plugin background tasks can fall behind.
Check these items in order:
- Go to Settings > General and confirm the WordPress Address and Site Address are correct.
- Temporarily turn off maintenance mode or password protection if it blocks public access to the site.
- Check whether a security plugin, firewall, CDN, or bot protection rule blocks requests to
wp-cron.php. - Ask your host whether loopback requests to the site URL are allowed.
- If loopback requests cannot be made reliable, use a real server cron instead.
Do not leave security plugins, firewalls, or CDN protections disabled after testing. Re-enable them and add a narrow allow rule for wp-cron.php if needed.
Add a real server cron for reliable publishing
A real server cron is often the best fix for low-traffic sites, busy stores, membership sites, heavily cached sites, and sites where loopback requests are unreliable.
Use your hosting control panel’s Cron Jobs, Scheduled Tasks, or similar tool. Add a task that calls your site’s cron URL every 5 minutes:
*/5 * * * * curl -s https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Replace https://example.com with your real site URL.
After the server cron is active, add this to wp-config.php so WordPress does not also try to run cron on normal page loads:
define( 'DISABLE_WP_CRON', true );
Five minutes is usually enough for normal post scheduling. Running cron every minute is rarely necessary and may create extra load on shared hosting. If your host documents a different cron format or interval, follow the host’s instructions.
Check plugin queues if missed schedules continue
Many plugins rely on WordPress cron for background work. WooCommerce, backup plugins, email tools, SEO plugins, membership plugins, and automation plugins can all add scheduled events.
After WP-Cron is working or a real server cron is running, watch whether missed schedules stop. If posts still miss their scheduled time, check plugin logs, status screens, or support tools for failed scheduled actions.
Temporarily disable only the suspected plugin if you need to confirm the source of the failure, then re-enable it after testing. If the plugin shows a failing hook, scheduled action, or queue item, contact the plugin vendor with that detail.
Avoid deleting cron events unless you know what created them. Removing the wrong event can stop scheduled emails, subscriptions, cleanup tasks, backups, or other plugin background jobs.
Optional WP-CLI check for SSH users
If you have SSH access and WP-CLI installed, you can check whether WordPress can spawn cron:
wp cron test
WP-CLI documents this under its cron command group.
If the test reports a spawn or connection failure, focus on loopback access, firewall rules, maintenance mode, the site URL, or a server cron replacement.
If your host supports WP-CLI in scheduled tasks, you can ask hosting support whether this format is suitable for your account:
*/5 * * * * cd /path/to/site && wp cron event run --due-now >/dev/null 2>&1
Use the actual WordPress install directory. If you are unsure what path or command format your host requires, ask hosting support to add the scheduled task.
Fix order for repeat missed schedules
Use this order when WordPress missed schedule errors keep coming back:
- Manually publish any post that should already be live.
- Check Settings > General > Timezone.
- Confirm
DISABLE_WP_CRONis not set without a replacement cron job. - Check for maintenance mode, password protection, firewall, CDN, or hosting rules blocking
wp-cron.php. - Add a real server cron if normal WP-Cron is unreliable.
- Check plugin logs or support tools if scheduled posts still fail.
Install a missed-schedule plugin only after checking the cron path. If WP-Cron cannot run reliably, a plugin may hide the post scheduling symptom while plugin queues, cleanup jobs, scheduled emails, and other background tasks remain delayed.