WordPress.org

Ready to get started?Download WordPress

Plugin Directory

WP Missed Schedule Fix Failed Future Posts

wordpress plugin wp missed schedule fix failed future posts that match this problem and republish them correctly 10 items each session every 5 minutes

reasons why wordpress virtual cron job fails could be due to:

  • DNS issue in the server
  • DNS issue in the database
  • Server Timezone Misconfiguration
  • Database Timezone Misconfiguration
  • Heavy server load results WP-Cron not fully executed
  • Unvisited server results WP-Cron rarely executed
  • Using cache plugins that prevent WP-Cron from loading
  • Using cache objects that prevent WP-Cron from loading
  • Plugins conflict: Jetpack for example!
  • WordPress bugs: Missed Schedule is a WordPress Bug!
  • And many other reasons

WordPress comes with its own cron job that allows you to schedule your posts and events. however, in many situations, the wp-cron is not working well and leads to posts missed their publication schedule and/or scheduled events not executed.

To understand why this happen, we need to know that the WP-Cron is not a real cron job. It is in fact a virtual cron that only works when a page is loaded. In short, when a page is requested on the frontend/backend, WordPress will first load WP-Cron, follow by the necessary page to display to your reader. The loaded WP-Cron will then check the database to see if there is any thing that needs to be done.

Publish a bunch of future posts noticed that they won't publish and when time comes to go live they just turn Missed Schedule. Took a look at the WordPress code and noticed future posts get assigned a cronjob ($unix_time_stamp, 'publish_future_post', array($post_ID)) wp_schedule_single_event Why don't you just look at the database and publish all posts with future status and date in past? My plugin WP Missed Shcedule looks for posts with a date in the past that still have post_status=future. It will take each post_ID and publish wp_publish_post it.

How to Work?

This plugin will check every 5 minutes, if there are posts that match the problem described. ( WPMS_DELAY, 5 ) To not use too many resources, it fix for 10 items per session, one session every 5 minutes. [ LIMIT 0,10 ] All others failed will be solved in future sessions, until no longer exist. When you activate this plugin, with ( 'WPMS_DELAY', 1 ) the first 10 "Missed Scheduled Future Posts" are fixed immediately. All others are fixed the next batch. On some case (rare?) are also fixed live. If you have "Missed Scheduled Future Posts" after this plugin is activated, is not one error or bug: wait the next checking. If "Missed Scheduled Future Posts" persist, verify that WordPress installation is clean, or exist conflict with other plugins.

N.B. If have active others plugins with the same functions of "WP Missed Schedule" this is on conflict and not work. I suggest to delete or deactivate all others, clean related database options table, and use only "WP Missed Schedule". In the same way "WP Missed Schedule" could create conflicts with other plugins with the same functions. In this case, delete or disable it and only used the others.

Dealing with WordPress "Missed Schedule"

If you are scheduling blog posts in WordPress and seeing a "Missed Schedule" message, it's likely caused by an issue with your web server, or it is WordPress that is causing the problem of your blog posts not being posted as scheduled. This is an annoying problem. However, there is a very simple fix that is easy to do. The "Missed Schedule" problem seems to point to the web server and WordPress. The "time/date" comparison needs to match in order for your blog posts to get published as scheduled. If you are currently using the WordPress, blogging platform, you can easily fix the issue by modifying the wp-cron.php file which is located in the root folder. You simply open your notepad editor in Windows and search for the following line of code, which is located towards the bottom on the file wp-cron.php file.

This is the code you need to search for: update_option(’doing_cron’, 0);

This is the code you need to replace it with: //update_option(’doing_cron’, 0);

Next step is to save the wp-cron.php file and upload to your web server. However, make sure that you renamed the current "wp-cron.php" on the web server to "wp-cron.php-org", just in case there is an issue, and you need to resort back to the original file. The final step is to schedule another blog post and make sure that it processes correctly and that it gets published according to schedule. To manually run the cron, you'll need to type or paste the code below in your Internet browser URL without the brackets. "yourdomain.com/wp-cron.php" If things are working correctly, it should return a blank screen. Furthermore, this should update the time/date" comparison between your web server and WordPress.

The Missed Schedule Problem

The way WordPress handles scheduling is that whenever a page is loaded, either from your blog or in your admin control panel, the file wp-cron.php is loaded. At normal, if correctly configured, the server can talk to itself just fine and WordPress scheduling system will works perfectly. It’s only when you start doing strange and weird things like not having DNS setup properly or blocking loopback connections then it will cause you problems. It is possible that certain web hosts are not allowing WordPress cron jobs to run but for many that is not the issue as scheduled posting was working before upgrading to WordPress 2.7.

In WordPress 2.7, the cron job design, which is the core of the scheduling engine, is significantly changed as you can from both wp-cron.php and cron.php in /wp-includes/ folder. In WordPress 2.7 wp-cron.php, there are references to local-time and doing_cron option is set to zero. This is not exist in WordPress version 2.6.5. This might be the cause of the problem as it’s very likely that your web server time is off by a few seconds or minutes from the WordPress official time. And doing_cron argument is set to zero making it absolutely necessary that your web server and WordPress time to match with each other in order for the scheduled post to go through.

Solutioni #1

If you think that your web server settings is the cause of the problem, simply type this URL in your browser //www.yourblog.com/wp-cron.php (replace yourblog with your actual domain name) to verify. If you see a blank screen, then your web server settings is ok. You can proceed to solution #2. If you see some error pages, then kindly check with your web hosting technical staff and ask for their help.

Solution #2

This is the solution to fix local-time and doing_cron option in wp-cron.php. If your programming is good enough, you are free to change the code and fix the issue yourselves. Remember to backup your WordPress before applying any change in production.

If you’re not familiar with programming, don’t worry, there is a simple solution.

  1. Download WordPress version 2.6.5 from WordPress repository
  2. Extract both wp-cron.php and cron.php file from version 2.6.5
  3. Backup your WordPress database
  4. Rename both wp-cron.php and cron.php in your web server to other name
  5. Upload both wp-cron.php and cron.php extracted from version 2.6.5 to your web server

Conclusion

I hope the fix working fine for you. WordPress should really look into this issue seriously and provide a fix or help to resolve the issue faced by many of the bloggers. If WordPress is not able to publish future post at predefined time, it should recheck it periodically for several time, says every 5/10/15 minutes, and publish the post as soon as possible.

Requires: 2.5 or higher
Compatible up to: 4.0
Last Updated: 2014-6-22
Downloads: 121,282

Ratings

4 stars
4.9 out of 5 stars

Support

2 of 2 support threads in the last two months have been resolved.

Got something to say? Need help?

Compatibility

+
=
Works!

8 people say it works.
0 people say it's broken.

100,4,4 100,2,2 100,4,4 100,1,1 100,4,4 100,4,4 100,4,4 100,1,1
100,4,4 100,1,1 100,4,4 100,1,1 100,4,4 100,4,4 100,4,4 100,1,1
100,4,4 100,4,4 100,1,1 100,4,4 100,4,4 100,4,4 100,1,1
100,4,4 100,4,4 100,6,6 100,4,4 100,4,4 100,4,4 100,8,8 100,1,1
100,4,4 80,5,4 100,6,6 100,4,4 100,4,4 100,4,4 100,6,6 100,1,1
100,4,4 100,10,10 100,6,6 100,4,4 0,1,0 100,4,4 100,4,4 100,1,1
100,2,2 88,8,7 100,4,4 100,4,4 100,4,4 100,1,1
100,8,8 100,4,4 100,4,4 100,4,4 100,4,4 100,1,1
100,4,4 100,5,5 80,5,4 100,1,1
100,4,4 100,7,7 100,7,7 100,1,1
100,4,4 100,4,4 100,8,8 100,6,6 100,5,5 100,1,1 100,1,1
89,9,8 100,11,11 100,1,1 100,1,1
100,12,12 100,1,1 100,1,1
100,1,1 100,1,1
100,1,1 100,1,1
100,1,1 100,1,1
100,5,5 100,7,7 100,1,1
75,4,3 100,1,1
94,18,17 100,1,1 100,1,1
83,6,5 100,1,1
75,4,3 100,1,1 100,4,4
88,8,7 100,1,1 100,4,4
100,4,4 100,4,4 100,4,4
100,4,4 100,12,12 100,4,4 100,4,4
100,6,6 100,14,14 100,6,6 100,9,9 100,4,4
100,4,4 62,13,8 100,9,9 100,4,4 80,5,4
100,10,10 100,4,4
100,4,4 100,4,4
100,4,4 100,4,4 100,4,4
100,5,5 100,4,4
100,6,6 100,11,11
100,13,13
100,6,6
100,6,6
100,4,4
100,8,8