WordPress Cron Jobs Not Running: How to Diagnose WP-Cron Failures

Learn why scheduled posts and emails miss deadlines and how to restore reliable timing.

WordPress cron jobs stop running when WP-Cron, the built-in task scheduler in WordPress, never gets triggered or gets blocked. To diagnose the failure, check scheduled tasks, confirm site visits reach wp-cron.php, and look for errors, caching, or disabled cron settings. WP-Cron does not run continuously like server cron. It wakes up when someone loads a page, then fires due tasks such as publishing scheduled posts, checking updates, or sending emails.

Table of Contents

Why WP-Cron Misses Its Schedule

WP-Cron depends on traffic. A low-traffic site may sit idle past a task deadline until the next visit starts the check. A high-traffic site can face the opposite problem, where overlapping requests interrupt long tasks.

Some hosts and plugins change this behavior. Caching can serve pages without loading WordPress, so WP-Cron never starts. Security rules, maintenance mode, password protection, or a disabled WP-Cron setting can also stop wp-cron.php from running.

How Do You Confirm the Failure?

Start with symptoms you can observe. Missed scheduled posts, unsent emails, expired transients that never clear, and backup or update plugins that never finish all point to WP-Cron. Then inspect the schedule directly:.

  • Install a cron-viewer plugin or use WP-CLI to list scheduled hooks, due times, and recurrence
  • Compare due times against the current time and watch whether late tasks stay late
  • Trigger wp-cron.php manually by loading the homepage, then recheck whether due tasks cleared
  • Review error logs and debugging output for failed HTTP requests, timeouts, or fatal errors during cron runs

What Blocks WP-Cron From Firing?

A common cause is DISABLE_WP_CRON set in wp-config.php. That setting stops automatic triggering, which is useful only when a server cron calls WP-Cron instead. If no server cron exists, tasks pile up.

Connectivity problems also matter. If the site cannot make HTTP requests to itself, WP-Cron spawns fail. Domain changes, wrong site URLs, basic authentication, firewall blocks, DNS issues, and SSL errors can break that loopback request. Plugin or theme errors can stop execution midway, leaving later tasks unfinished.

How Do You Fix Common WP-Cron Problems?

Remove the immediate block first. Turn off prolonged maintenance mode, exclude wp-cron.php from aggressive caching, and fix the site address if it points to the wrong domain. Deactivate a suspect plugin, switch briefly to a default theme, and test whether scheduled tasks resume.

For low-traffic sites, add a dependable trigger. Most hosts let you create a server cron job that visits wp-cron.php every five to fifteen minutes. That approach keeps scheduled work on time without waiting for visitors and avoids duplicate runs from busy traffic.

When Should You Use Real Server Cron?

Use server cron when timing matters. Membership expirations, order follow-ups, course drips, inventory syncs, and client reports should not wait for the next visitor. Server cron also helps sites with heavy caching, staging protections, or long-running imports.

The usual setup keeps WP-Cron active but driven by the server. Disable automatic front-end triggering, then schedule a server task to request wp-cron.php on a short interval. Test one full cycle, then watch the schedule for a day to confirm late tasks no longer accumulate.

Frequently Asked Questions

Will more traffic fix missed schedules?

Traffic can trigger WP-Cron sooner, but it does not fix blocks from caching, disabled cron, failed loopback requests, or fatal errors.

Does disabling WP-Cron delete scheduled tasks?

No. It only stops automatic triggering. Tasks remain scheduled until something calls WP-Cron or server cron takes over.

Why do some tasks run twice?

Overlapping page loads can spawn WP-Cron more than once. A single server cron on a fixed interval usually prevents duplicates.


You Might Also Like