A "missed schedule" post means WordPress never ran the task that was supposed to publish it. WordPress doesn't have a real background scheduler: it uses WP-Cron, which only fires when a visitor loads a page on your site. If nothing loads your site at the exact minute a post is due, the publish event gets skipped and the post sits there marked as missed. The fix is almost always to stop relying on visitor traffic to trigger WP-Cron and instead run it on a real schedule.
Start with the immediate problem, then fix the root cause so it doesn't happen again.
First: publish the stuck post
A missed-schedule post doesn't auto-recover. Open wp-admin → Posts, find the post, and either click Edit and hit Publish directly, or use Quick Edit to reset the status. This clears the immediate issue but does nothing for the next scheduled post, so don't stop here.
Cause 1: low traffic means WP-Cron never triggers
WP-Cron's default behavior is to check for due tasks on every page load, via a hidden request to wp-cron.php. If your site gets little to no traffic between the scheduled time and whenever the next visitor happens to arrive, scheduled events sit waiting. A post scheduled for 3am on a low-traffic blog might not actually publish until the first visitor shows up hours later, and if that visitor never comes before some threshold, WordPress gives up and marks it missed.
The fix is to replace the traffic-triggered check with a real cron job that hits wp-cron.php on a fixed interval, regardless of visitors. Two steps:
- Add this to
wp-config.php, above the line that says/* That's all, stop editing! */:define('DISABLE_WP_CRON', true); - Set up a real cron job from Services → your hosting → Cron Jobs in the portal to call the WP-Cron endpoint on a schedule, for example every 15 minutes:
wget -q -O /dev/null "https://yourdomain.com/wp-cron.php?doing_wp_cron" >/dev/null 2>&1
This guarantees WP-Cron runs on a predictable interval instead of hoping a visitor loads the site at the right moment. It also spreads out the WP-Cron overhead instead of running it on every single page load, which helps on busier sites too.
Cause 2: a plugin disabled or broke WP-Cron
Some caching and performance plugins set DISABLE_WP_CRON to true on their own, assuming you'll wire up a real cron job, then don't tell you they did it. If you didn't add that constant yourself, check wp-config.php for it. If it's there and you don't have a server-side cron job calling wp-cron.php, that's your entire problem: nothing is triggering scheduled events at all, not just intermittently.
A broken or conflicting plugin can also throw a fatal error partway through the WP-Cron request, which kills the process before it reaches the publish step. If posts started missing their schedule right after installing or updating a plugin, that's a strong signal. The isolation method is the same one used for diagnosing a white screen of death: rename /wp-content/plugins/ to /wp-content/plugins.bak/ via FTP or the file manager, confirm scheduled posts start publishing normally, then restore the folder and re-enable plugins one at a time until the problem comes back.
Cause 3: server time zone or clock mismatch
WordPress schedules posts using the time zone set in Settings → General → Timezone, then compares that against the server's actual clock. If the site's time zone setting doesn't match what you intended, or the server's system clock has drifted, WordPress can think a post's scheduled time hasn't arrived yet, or has already passed by the time WP-Cron checks, and mark it missed either way. Confirm the time zone in Settings → General matches where your audience or business actually is, not UTC by default. This is a WordPress-level setting, not something you can adjust from cPanel or the portal.
Rule out a database connection problem
If posts have been failing to publish across the board rather than occasionally, and the site is otherwise acting unstable, check that WordPress can actually reach its database. A dropped database connection at the moment WP-Cron fires would prevent the publish event from running at all, and would typically show up alongside other symptoms too. See fixing WordPress database connection errors if you're seeing connection errors anywhere else on the site.
Confirm the fix worked
After setting up the real cron job, schedule a test post a few minutes out and watch whether it publishes on time. If it does, the traffic-dependent WP-Cron was the issue. If it still misses its schedule with a server-side cron job in place and calling wp-cron.php on schedule, the problem is likely plugin-level or a time zone mismatch, and it's worth working through Cause 2 and Cause 3 in order rather than assuming it's fixed.
When to open a ticket
If you've set up the cron job, confirmed the time zone is correct, and ruled out a plugin conflict but posts are still missing their schedule, open a ticket from the portal's Support section. Describe the issue and the steps you've already tried. This is also the right move if you don't have shell or file manager access to check wp-config.php yourself.