when your scheduled post neglects to check its watch

A question I sometimes hear from my WordPress clients is “Why didn’t my post publish when I scheduled it?”

(Please note this answer is specific for those who self-host WordPress. If you use wordpress.com please refer to this page for instructions on scheduling posts and use this contact page if you experience difficulties.)

The ability to write posts now and schedule them to publish in the future is one of my favourite features of WordPress. Sometimes however, something goes wrong and it isn’t published when you expect or you might see an error of “Missed Schedule”. 

Yes, we can all use a search engine and find one of the many posts that suggest you “install a plugin” to fix it. If that’s the route you wish to take, I won’t stop you.

However, I don’t like that solution as it doesn’t look into why the problem exists and try to fix it. There are several reasons why a post might not be published when it was scheduled. I’ll briefly explain a few of them.

  1. Is the time zone is set correctly? This setting is found in Options > Settings > General. Many times a web server is located in a very different time zone from you and it set to UTC and not the local time.
  2. Does the site have very low traffic? There’s a bit of code that runs behind the scenes, wp-cron and that is often triggered through site traffic. If there aren’t many visitors around the time for which the post is scheduled sometimes it never gets published and results in a “Missed Schedule” post.
  3. Sometimes due to server configuration imposed by the web host wp-cron never runs properly. If after checking the time zone and site traffic things look like they should be working, please contact your web host or ask me for help.

In general, cron is a very powerful tool on your web server to schedule server and website tasks, such as scheduling blog posts. If it seems that your attempts to fix the error through the above methods failed, then look into a plugin. Don’t forget to do so safely.

A prior version of this post appeared on the Patterned Blog.