Skip to content

How to Fix WordPress Scheduled Posts Missing Their Publish Time

Fix WordPress scheduled posts marked Missed Schedule by checking timezone, WP-Cron, Site Health, caching, and hosting cron settings safely.

5 min read Last updated Jun 19, 2026

A WordPress scheduled post usually shows “Missed Schedule” because WP-Cron did not run at the right time, the site timezone is wrong, or a cache/security/hosting rule blocked the cron request. First, publish the missed post manually if it is time-sensitive, then check Site Health before changing plugins or server settings.

Quick checks before changing anything

Open Posts > All Posts and find the missed post. If it should already be public, click Quick Edit, change the status to Published, and save. This fixes the immediate content problem without touching site configuration.

Then check the site clock:

  1. Go to Settings > General.
  2. Confirm the Timezone matches the audience or editorial calendar.
  3. Save changes if you update it.

WordPress uses this setting to calculate scheduled publish times; the official General Settings documentation covers where the timezone setting lives and what it controls.

Check Site Health for cron warnings

Go to Tools > Site Health and review the Status tab. WordPress can flag problems such as missed scheduled events, failed loopback requests, or REST API issues. Those warnings matter because WordPress cron depends on normal site requests to trigger scheduled tasks.

The WordPress Site Health screen documentation explains where to find the status checks and how WordPress groups critical issues, recommended improvements, and passed tests.

Use this decision path:

What Site Health shows What to do next
Missed scheduled events Check caching, security rules, and hosting cron below.
Loopback request failure Ask the host to confirm the site can request its own wp-cron.php URL.
REST API or fatal error warning Temporarily disable the plugin named in the warning, or check error logs.
No cron-related warning Look for low traffic, disabled WP-Cron, or plugin-specific scheduling problems.

Why WP-Cron misses scheduled posts

WordPress does not run a constant background scheduler by default. Its cron system runs when the site receives traffic, then checks whether scheduled tasks are due. The official Plugin Handbook page on WP-Cron describes this request-triggered behavior.

That means missed posts are more likely when:

  • The site has very low traffic around the scheduled time.
  • A page cache, firewall, or security plugin blocks cron requests.
  • DISABLE_WP_CRON is set in wp-config.php without a replacement server cron.
  • A plugin or theme error stops scheduled tasks.
  • The site timezone differs from the editor’s intended schedule.

Safest fix order

1. Clear cache and exclude cron from blocking rules

If the site uses a caching, performance, firewall, or security plugin, clear the cache first. Then check whether the plugin has settings that block background requests, loopback requests, REST API requests, or wp-cron.php.

Do not disable every performance feature at once. Change one setting, schedule a test post a few minutes ahead, and confirm whether it publishes. If it does, keep the narrow fix and leave the rest of the cache configuration alone.

2. Check whether WP-Cron was disabled

Use SFTP, your hosting file manager, or your host’s WordPress tools to inspect wp-config.php. Look for this line:

define( 'DISABLE_WP_CRON', true );

If that line exists, WordPress will not run its normal request-based cron. That is fine only when the host has created a real server cron job to call WordPress cron regularly.

If you did not intentionally set up server cron, remove that line or change it to:

define( 'DISABLE_WP_CRON', false );

Before editing wp-config.php, download a backup copy. If the site breaks after the edit, restore the original file by SFTP or the hosting file manager.

3. Ask the host to add a real cron job for low-traffic sites

For small sites, private sites, staging sites, or sites with traffic spikes far away from scheduled publish times, a server cron is often more reliable than waiting for a visitor.

Ask your host to run WordPress cron every 5 to 15 minutes. Many hosts have a cron-job panel; managed WordPress hosts may expose this as a built-in setting or handle it for you.

A typical server cron calls:

*/10 * * * * curl -s https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Replace https://example.com with the site URL. Do not add this yourself if the host already manages WordPress cron, because duplicate cron triggers can cause noisy logs or plugin task overlap.

4. Look for plugin-specific scheduled tasks

Some plugins use WordPress cron for newsletters, backups, SEO scans, ecommerce jobs, image processing, and security checks. If missed posts started after installing or updating a plugin, check that plugin’s logs or settings first.

A practical test is to schedule a plain test post while temporarily disabling only the most likely plugin, such as a cache, security, editorial calendar, or post-scheduling plugin. If the test post publishes, re-enable the plugin and review its settings instead of leaving it disabled permanently.

Optional SSH check with WP-CLI

If you have SSH access, WP-CLI can show whether cron events are overdue:

wp cron event list --fields=hook,next_run_relative,recurrence

Look for many events showing now or overdue times. One or two due events can be normal; a long list that never clears points to cron not running, loopback requests failing, or a fatal error interrupting scheduled tasks.

WP-CLI is useful for diagnosis, but it is not required for most site owners. Use Site Health and hosting support first if you do not normally manage the site over SSH.

Confirm the fix worked

Create a temporary test post and schedule it 5 to 10 minutes ahead using the same timezone shown in Settings > General. Leave the site alone until the scheduled time passes, then refresh Posts > All Posts.

The fix is working when:

  • The test post changes from Scheduled to Published.
  • Site Health no longer reports missed scheduled events.
  • Future scheduled posts publish without manual intervention.

Delete the test post after confirming the result.

When to contact hosting support

Contact the host if Site Health reports loopback request failures, cron events keep piling up, or wp-cron.php returns a firewall, timeout, redirect, or authentication challenge. Ask them to check whether server security rules, basic authentication, CDN rules, or bot protection are blocking WordPress from calling its own cron URL.

If the host confirms cron is reachable and scheduled posts still miss their time, collect the approximate missed publish time, the post ID or title, and any PHP error-log entries from that window. That gives plugin or theme support enough context to find the task that interrupted publishing.

Published by

Editorial Staff

Practical WordPress fixes, recovery steps, and performance notes from the BugWP editorial team.