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.