How to FIX WordPress Posts Missed Schedule Problem

Since I moved to DigitalOcean, all my scheduled posts are not working then it’s labeled as Missed Schedule. I have faced this problem for two times without any notices. After digging around a bit I realised this error was very widely reported, I found a lot of suggestions from other frustrated bloggers. So I wasted about one hour trying to find out what was wrong before it’s fixed.
In this article, you will learn How did I FIX WordPress Posts Missed Schedule Problem?

The main reason why WordPress Posts Missed Schedule

WordPress doesn’t use real cron jobs because in order to set them up, you have to configure things on your server. If WordPress doesn’t have permission to access to that, your WordPress posts won’t publish at specified time.
There are several reasons of Missed Schedule problem:

  1. Too low traffic website.
  2. Difference timezone between your location and your server.
  3. WordPress can’t creat WP-CRON or it’s not working.

Too low traffic website
Scheduled posts don’t actually appear until someone visits the blog after the scheduled time of publication. Basically, the post is published upon visit and back-dated to the schedule time. The next time you schedule a post, could you logout and visit your blog a few minutes after the scheduled time to see it.
Difference timezone between your location and your server.
Change to correctly timezone by navigate to Setting > General.

Use WordPress plugin

The first and second reasons can fix by use WordPress plugins (sometimes it works with third reason): WP Missed Schedule Fix Failed Future Posts

WP Missed Schedule Fix Failed Future Posts
WP Missed Schedule Fix Failed Future Posts

This plugin not decrease server performance why check the internal wordpress virtual cron job, to not waste resources, and not the real cron job of the server at scale. Thankfully, it is very easy to set up considering there are no settings to configure in the plugin. The way how this plugin works is that it check and fix only missed schedule failed future posts scheduled virtual cron job items, and no others, to not waste resources.
If you are still having the problems, let’s go to next solution.

Using a Real WordPress Cron Job

Before use Real WordPress Cron Job, you must disable virtual cron job first by add the line below to configuration file wp-config.php:

define( 'DISABLE_WP_CRON', true );

Once WordPress’ built-in cron thingy is disabled in your configuration, we need to set up a real cron job to trigger it as a separate process.

Hosting Provide with Control Panel

The most popular Web Hosting Control Panel is CPanel, if your web hosting provider doesn’t CPanel, you need looking for Cron Job setting.

CPanel Cron Job Settings
CPanel Cron Job Settings

Remember change your correct domain and path in Command field:

wget -O /dev/null http://yoursite.com/wp-cron.php?doing_wp_cron

Notes: If you’re running WordPress Multisite, the URL for each subsite would be like one of these, depending on if you use subdirectories or subdomains.

  • http://domain.com/subsite/wp-cron.php?doing_wp_cron
  • http://subsite.domain.com/wp-cron.php?doing_wp_cron

You’re managing your own server

Checked that cron was running and restart it if needs.

$ pgrep cron
# service cron restart

Then enter cron jobs list and add:

$ crontab -e
> */1 * * * * wget http://www.domain.com/wp-cron.php?doing_wp_cron 2>&1 > /dev/null

What’s about 2>&1 > /dev/null
The 2>&1 > /dev/null bit just redirects all output to /dev/null, which discards it.

/etc/hosts is pointing to wrong domain

After some debugging, I found /ect/hosts point to my domain first instead localhost.

127.0.0.1  narga.net www.narga.net localhost localhost.localdomain

This might also cause issues for other people, because to execute cron tasks, WordPress needs to post to the URL http://yourdomain.com/wp-cron.php?doing_wp_cron. If /ect/hosts point to your domain first, WP-Cron get 404s URL. That’s why WordPress Posts Missed Schedule.
Here is my /ect/hosts

127.0.0.1  localhost localhost.localdomain
xxx.xxx.xxx.xxx yourdomain.com yourdomain

Conclusion

That’s it, congrats you just fixed the pesky “Missed Schedule” error in WordPress and made scheduled tasks in WordPress just much more reliable and awesome in general. Did you get affected by this issue? If so, then hopefully this solution fixed the problem. Please let us know if you have any questions or comments regarding the WordPress Posts Missed Schedule Problem.

wordpress issues and problems, wordpress tips and tricks

4 Comments

  1. For those who has no Cron support on their hosting, they can try online cron job service like easycron.com. It provides free cron jobs that run every 10 minutes.

  2. I have a new blog and I have zero knowledge and understanding of Linux and coding in it. I’ve got my blog up and running but have one issue. I normally am three days ahead in my writing each day for my daily entries so I have a lot of scheduled posts. The only way to get them to post is to have someone visit my site. That works, but it’s something that my old blog tool didn’t have to do. It just did it on its own. Sadly that tool is going away so I had to migrate to WordPress and I don’t understand why they even have it set up this way. A scheduled post should post automatically when the time is selected for it. Anyway, I did do the WP missed schedule plug in but it doesn’t seem to do anything? My posts still don’t get published unless I go to the site and trigger it to post or someone else does? Why would that be? My time zone is fine, it’s EST and like i said my posts publish as long as I trigger it by visiting my page or someone else does. Can someone please help me understand this problem?

  3. Thank you, It has happende to me few times, hope I will solve it

  4. Omg, I had the time zone problem. LOL Thank you! I just recently moved to a self host blog & I’m just learning about the process. You saved me a massive headache!


Add a Comment

Your email address will not be published. Required fields are marked *

Comment *
Name *
Email *
Website

This site uses Akismet to reduce spam. Learn how your comment data is processed.