Maintenance

WordPress and cron jobs: what they are, what they do and how to manage them better

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.

Do you have a project to build or to put back in order?

Let's talk