WordPress scheduled post not published: rescue it and find the cause
When a WordPress scheduled post is not published, publish it by hand first: open it, set the date to now or click Publish. Then look for the cause. It is almost always WP-Cron, the WordPress scheduler that runs on site visits. Low traffic, caching or the host can block it, and the lasting fix is done by the host.
Author: The TellMyShop team. A guide for WordPress site and WooCommerce store owners: the cause, the manual fix and the same work in a chat conversation.
Last updated: · 6 min read
What to do straight away when a post did not publish
Rescue the post first and deal with the cause in a moment. If the link has already gone out in a newsletter or on social media, every minute counts.
- Go to Posts → All Posts and click the Scheduled filter. Overdue posts show “Missed schedule” next to the date.
- Open the post in the editor.
- In the right-hand panel, click the publish date and set it to now, or choose to publish immediately.
- Click Publish and open the post's address in a private window.
- If the post is visible but missing from the blog list, clear the cache in your caching plugin or at your host.
- Check whether other posts were scheduled at the same time. A scheduler problem usually affects all of them, not just one.
If you keep the past scheduled date and click Publish, the post gets that date. It will then appear lower on the blog, among older posts. It is usually better to set the date to now.
Why WordPress did not publish the scheduled post
WordPress has no clock of its own. Scheduled tasks, including publishing a post, run when someone visits the site. If nobody visits at 8:00, the post waits for the first visitor. If something blocks the mechanism itself, it waits forever. Kinsta explains this in more detail in its guide to the missed schedule error.
| Cause | How you recognise it | Who fixes it |
|---|---|---|
| Low traffic at that time | the post goes out late, on the first visit | host or site maintainer: a cron job on the server |
| Cache serves ready-made pages | there are visits, but tasks still run late | site maintainer: caching plugin settings |
| Server or firewall blocks wp-cron.php | Site Health warns about late tasks, errors in the log | host |
| Scheduler disabled in wp-config.php with no server cron | no task runs at all, not only posts | host or site maintainer |
| A plugin clogs the task queue | hundreds of tasks from one plugin, PHP errors in the log | site maintainer: update or deactivate the plugin |
Many managed hosts set up a server cron job themselves. On cheaper plans you have to do it in the hosting panel or ask support.
How to check what is blocking the scheduler
Start with Tools → Site Health. WordPress has a test that checks whether scheduled tasks run on time. When one is late, you will see a message about a late scheduled event in the recommendations. The test is described in the Site Health class documentation. Note: a single warning right after a new task was added can be a false alarm. What matters is whether the problem keeps coming back.
Then check three things:
- Is it only posts? If updates and plugin tasks are late too, the problem is in the mechanism itself, not in the post.
- Has something changed? A new caching plugin, a firewall, a move to another server or a change of hosting plan are common starting points.
- What does the error log say? A PHP error in one plugin's task can stop the whole queue.
The lasting fix: a cron job on the server
The most reliable solution is a server task that calls the WordPress scheduler every few minutes, regardless of traffic. The built-in run-on-visit behaviour can then be switched off. The developer documentation covers this in the article on hooking WP-Cron into the system task scheduler. A step-by-step walkthrough with common pitfalls is in this guide to fixing missed schedule.
This is a job for your host or the person who looks after the site, because it needs the server panel and a change in wp-config.php. When you ask for help, say when the post was due, whether other tasks are late too and which caching plugin runs on the site.
As a stopgap, a plugin that publishes overdue posts from time to time helps. It is a good plaster while you wait for the host, but it does not replace a server cron job.
How the chat helps when a post did not publish
The TellMyShop plugin for WordPress and WooCommerce will not fix the server scheduler. It does help your chat (Claude or ChatGPT) quickly work out what is going on and rescue the post.
You: The post about planting roses in autumn was due at 8:00 and it is still scheduled. What happened?
Your chat: I have checked the site. Two posts have a date in the past and the status scheduled. Site Health shows late scheduled tasks, and there are no PHP errors in the log. A caching plugin runs on the site. The most likely cause: low morning traffic plus the cache, so the scheduler does not start. Preview for the first post:
Publish it? The second post is not due until next week, so I am leaving it alone.
You: Yes.
Your chat: Published. Below is a three-sentence description of the problem for your host, asking for a server cron job.
old version: Status: scheduled, due 8:00
new version: Status: published, date: now
The titles, times and results in this conversation are examples. In TellMyShop Free the chat checks site health, error logs and the plugin list and tells you what is most likely blocking the scheduler. You then publish the post yourself. In TellMyShop Pro it changes the post status after you approve the preview, right after you activate the licence, and the change goes into the change history.
What the chat will not do: it will not set up a server cron job and will not change wp-config.php, because that file is blocked in every version. It changes caching plugin settings only with the Plugins switch on, which you turn on in the plugin panel for 24 hours. If the problem keeps coming back and you do not know where to start, we describe a full site review in the post on the WordPress SEO audit, and sudden errors after updates in the guide on what to do when WordPress breaks after an update.
You can download the free version from the TellMyShop Free page, and we describe what Pro can do on the TellMyShop for WordPress and WooCommerce page.
Questions and answers
What does “Missed schedule” mean on a WordPress post?
It means the publishing time came and WordPress did not run the task that was meant to change the post's status. The post stayed scheduled. You will see this label next to the date in the post list.
Why did WordPress not publish my scheduled post?
WordPress runs its scheduled tasks when someone visits the site. If nobody visits, if a cache serves ready-made pages or if the server blocks the wp-cron.php file, the task runs late or not at all. Less often, a plugin clogs up the task queue.
Will a missed schedule plugin fix the problem?
It often helps, because it publishes overdue posts from time to time. But it treats the symptom. The lasting fix is a cron job on the server, set up by your host or the person who looks after the site.
Can the chat fix the WordPress schedule?
No. The chat checks site health and error logs, points to the likely cause and prepares a description of the job for your host. With TellMyShop Pro it can publish the late post after your approval, but it does not change server settings or the wp-config.php file.
Will a post published late lose anything in Google?
There is no reason a few hours' delay should harm the post. The publish date will be set to the moment you publish it, unless you keep the planned date. What matters more is that your newsletter or social media post did not go out with a link to a page that does not work yet.
WordPress is a trademark of the WordPress Foundation. WooCommerce is a trademark of Automattic Inc. Claude is a trademark of Anthropic PBC. ChatGPT and OpenAI are trademarks of OpenAI. TellMyShop is not affiliated with these companies.