← Back to blog

WP-Cron: Why It Causes Problems and How to Switch to a System Cron

26/07/2026

WP-Cron is WordPress'' built-in task scheduler — publishing scheduled posts, checking for updates, sending emails, cleaning the database. The catch is that WP-Cron is not a real cron: it only fires when someone visits your site. On low-traffic sites tasks run late; on high-traffic sites wp-cron.php fires on every request and wastes resources.

How to spot the problem

Typical signs: scheduled posts stuck as Missed Schedule, newsletters going out late, backups not starting on time, and CPU spikes during traffic peaks. With WooCommerce, a missed cron can break subscription renewals and order emails.

Step 1: disable the default WP-Cron

In wp-config.php, above the „stop editing" line, add:

  • define('DISABLE_WP_CRON', true);

WordPress will stop triggering cron on every page view.

Step 2: set up a real system cron

On a solid host via cPanel (or over SSH with crontab -e) add a job that calls this every 5 minutes:

  • */5 * * * * wget -q -O - https://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Now tasks run exactly on time regardless of traffic, and the site is faster because cron no longer runs on every click.

How often?

For most sites, 5 minutes is a healthy balance. Stores with frequent scheduled actions can go to 1–2 minutes; a low-priority blog can use 15 minutes.

On our WordPress hosting you configure a system cron in a couple of clicks, while NVMe storage and caching further cut the load. See our plans if you need a more stable base for scheduled jobs.

100% GUARANTEE30-day money back

30-day money back

No questions asked. Full refund if you are not satisfied.