Have you ever scheduled a post and wondered how WordPress knows when to publish it? The answer is WP-Cron. It is the built-in system WordPress uses to run scheduled tasks, such as publishing posts, checking for updates and running plugin jobs like backups.
How Does WP-Cron Work?
The name comes from cron, the time-based job scheduler on Linux servers. But WP-Cron is not a real cron. It doesn't watch the clock; it only runs when someone visits your site.
On each page load, WordPress checks whether any task is due. If one is, it quietly calls the wp-cron.php file in the background to run it. Think of a shopkeeper who only checks the to-do list when a customer walks in.
Plugins add their own tasks with functions like wp_schedule_event(), using built-in intervals such as hourly, twice daily, daily and weekly. To see the tasks waiting in the queue, you can use a free plugin like WP Crontrol.
Common Problems With WP-Cron
- Low traffic: If nobody visits, tasks have to wait. This is the main cause of the missed scheduled post error.
- High traffic: Checking for due tasks on so many visits adds extra work for the server.
- Caching: Full-page caching can reduce the visits that reach WordPress, so tasks may run late.
How to Use a Real Cron Job Instead
- First, open your
wp-config.phpfile using FTP or your host's file manager. - Now, add
define( 'DISABLE_WP_CRON', true );above the "stop editing" comment near the end of the file. - Next, open the Cron Jobs section in your hosting control panel.
- Here, create a job that loads
https://yoursite.com/wp-cron.phpevery 15 minutes.
Never add the DISABLE_WP_CRON line without setting up the real cron job. If you do, scheduled posts and other tasks will stop running.
Want to publish posts at a set time? Here is how to schedule WordPress posts to publish later.
That covers WP-Cron. It works fine for most small blogs, but a real cron job is more reliable. If you face any issues with scheduled tasks, write to us in the comment section below.