
Has an automatic backup ever failed to run?
Or have contact form emails arrived late?
Or has a scheduled update simply not started?
The problem is often related to cron jobs, a fundamental (but little-known) part of how WordPress works internally.
In this article I explain what the WordPress cron system is, why it can cause problems and how to set it up more reliably.
What a cron job is
A “cron job” is a scheduled task that runs automatically at a given frequency.
On servers, it is a classic Linux feature for saying: “run this task every day at 3 a.m.”.
WordPress has its own internal version called WP-Cron, which handles recurring events such as:
- Sending emails automatically
- Scheduled backups
- Checking for updates
- Publishing scheduled posts
- Cleaning up transients or cache
How WP-Cron works
Unlike a “real” cron job (run by the server), WP-Cron runs only when someone visits the site.
In practice:
- A user visits a page
- WordPress checks whether any scheduled tasks are due
- If so, it starts them
This works well on sites with steady traffic.
But if your site has few visitors, or only occasional visits, scheduled events may never run.
When WP-Cron causes problems
- The automatic backup does not run because nobody visited the site at the scheduled time
- A post scheduled for 10:00 a.m. is published only hours later
- Automatic updates do not complete
- Some newsletter or synchronisation plugins stop working
Hosting can also affect WP-Cron: on shared servers it may be blocked or throttled for performance reasons.
How to manage cron jobs better in WordPress
1. Disable the internal WP-Cron
You can turn off WP-Cron by editing the wp-config.php file and adding this line:
define('DISABLE_WP_CRON', true);
This stops WordPress from running cron jobs on every visit.
2. Set up a real cron job in your hosting
Log in to your control panel (cPanel, Plesk and so on) and set up a cron job that periodically calls your site’s wp-cron.php script.
Example command (every 15 minutes):
wget -q -O - https://yoursite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
Or use curl if wget is not available.
3. Use a plugin to monitor active cron jobs
You can install plugins such as:
- WP Crontrol → shows all active cron jobs and lets you edit or delete them
- Advanced Cron Manager → a clearer interface, useful for debugging
Both let you see whether cron jobs are piling up or never running.
When it is worth stepping in
- Your site has features that depend on scheduled events (backups, emails, publishing)
- You have low traffic and cron jobs that do not fire
- You notice problems that occur “at specific times” and then fix themselves
In these cases, setting up a server-side cron job is the most stable solution.
Conclusion
The cron system is one of the least visible but most important parts of a well-running WordPress site.
Understanding how it works helps you avoid silent bugs, guarantee regular backups and have a truly reliable site.
If you want me to check your WP-Cron or set it up professionally, get in touch: I can help you avoid hidden problems and make your site more stable.