You know the feeling – you scheduled a post to appear at 9:00 a.m. on Monday morning, but it never posted. What happened?
WordPress isn’t an application that runs silently in the background, automatically doing things even when no one is using it. Instead it runs certain functions whenever someone visits the site. One of those function is to check for any schedule posts. Your WordPress scheduled post will actually go live after the first visitor to your site following the scheduled time you set.
That is a little confusing, so here it is in diagram form:
If your site doesn’t get a lot of visitors then WordPress may not check for scheduled posts at all – which means your scheduled post will never appear.
How Can I Make Sure My WordPress Scheduled Posts Appear?
What is needed is a program that will “ping” your site on a scheduled basis, thereby activating the WordPress scheduled post function. The program that does this is called a cron job and there is a site which makes setting up your cron jobs easier: Easycron.
Log into Easycron and get a free account.
Click on “Create New Cron Job”.
For the URL enter http://yoursiteurl.com/wp-cron.php , making sure to use your own domain in the place of yoursiteurl.com. For when to execute, choose what you want. I use every 1 hour. Click on “Create Cron Job” and your cron job should now be running.
Note: EasyCron also has a plugin, but it seems easier just to set up the cron job on their site.
These instructions do not disable the internal WordPress cron function because we are assuming this is a site without a lot of traffic (which is the whole problem with the posts not appearing). If you have a higher-traffic site you will want to disable WordPress’ internal cron functions by adding the following to your wp-config.php file: define(‘DISABLE_WP_CRON’, true);
If you know how to set up a cron job on your host, or have special scripts you want to run, check out this excellent post by Tom McFarlin.