Introduction

Disabling wp-cron.php is a valid performance optimization only if a real scheduler replaces it. Many sites set DISABLE_WP_CRON in wp-config.php and never create the system cron job, which leads to missed scheduled posts, stale WooCommerce emails, and plugins that appear randomly broken.

Symptoms

  • Scheduled posts stay in the future instead of publishing
  • WooCommerce follow-up emails or subscription renewals stop running on time
  • wp cron event list shows overdue events piling up
  • The issue started after disabling wp-cron for performance tuning

Common Causes

  • DISABLE_WP_CRON was enabled without creating a server-side cron job
  • The system cron runs under a user that cannot execute PHP or access WordPress
  • The cron command uses the wrong path to WordPress or PHP
  • Basic auth or a firewall blocks the HTTP call to wp-cron.php

Step-by-Step Fix

  1. 1.Check whether wp-cron is disabled and events are overdue
  2. 2.Confirm the configuration problem before changing plugin settings.
bash
wp config get DISABLE_WP_CRON
wp cron event list --due-now
  1. 1.Create a real server cron job
  2. 2.Use WP-CLI if possible because it is more reliable than hitting wp-cron.php over HTTP.
bash
*/5 * * * * /usr/local/bin/wp cron event run --due-now --path=/var/www/html >/dev/null 2>&1
  1. 1.Verify the cron user can execute PHP and access the site files
  2. 2.Cron commonly fails because the PATH, PHP binary, or WordPress path differs from an interactive shell.
bash
sudo -u www-data /usr/local/bin/wp cron event run --due-now --path=/var/www/html
  1. 1.Re-run overdue jobs and confirm the queue clears
  2. 2.After the real cron is working, flush the backlog and watch new events trigger on schedule.
bash
wp cron event run --due-now
wp cron event list

Prevention

  • Never enable DISABLE_WP_CRON without provisioning a server cron in the same change
  • Prefer WP-CLI cron execution over public HTTP calls to wp-cron.php
  • Include scheduled task verification in post-deploy checks
  • Monitor overdue cron events on busy WordPress and WooCommerce sites