WordPress scheduled publishing depends on scheduled cron events actually being triggered. On low-traffic websites, a missed trigger may delay publication; on busy or misconfigured websites, disabled WP-Cron, failed loopback requests or fatal errors can prevent scheduled posts from publishing. Distinguish a delayed event from a continuously failing scheduler before installing extra cron plugins.
Symptoms: identify the exact failure
Before changing a setting, reproduce the issue once and write down the affected product, operating-system or service version, error text, time, and what still works. One useful observation narrows the fault domain far more than several indiscriminate resets.
- Signal 1: Post remains Scheduled after its intended time
- Signal 2: Several scheduled tasks are overdue across the site
- Signal 3: Manual Publish works but automated scheduling does not
Why this happens
Different failure points can produce nearly identical messages. A fix is more reliable when it targets the failing layer rather than the nearest visible symptom.
- Traffic-dependent cron does not run near the target time
- DISABLE_WP_CRON is true without a functioning server trigger
- Loopback or PHP fatal errors block the due event
Before making changes
Protect data and preserve a rollback path. Back up database and wp-config.php before configuration edits. Do not publish private test content publicly by mistake. On a managed host, ask whether the host provides native cron and avoid exposing wp-cron.php to aggressive public scraping.
Recommended approach: Perform the low-risk checks first. Record the original value of every setting you change, test the exact failing action after each step, and stop when the result is repeatable. Avoid applying several unrelated remedies at once.
Step-by-Step Troubleshooting
The steps below are stored in PRBLEM’s editable Beginner and Advanced troubleshooting fields. Select a method appropriate to your experience; the Beginner sequence focuses on reversible checks, while Advanced actions are intended for administrators or users comfortable collecting diagnostic evidence.
Step-by-Step Troubleshooting
Follow the reversible checks in order; use Advanced only if authorized and preserve the original settings.
Verify post status and timezone
Check the post is Scheduled with a future date interpreted in Settings > General timezone. Compare local and UTC times, especially around daylight saving transitions.
Check site health warnings
Inspect Site Health for REST API, loopback and scheduled event errors. Record exact diagnostics without copying secrets.
Inspect due events with a trusted tool
As an administrator, review scheduled publishing events and overdue jobs using supported tooling; avoid manually deleting unknown hooks.
Review WP-Cron configuration
Check whether DISABLE_WP_CRON is enabled and whether the host supplies an authenticated or system-level scheduler. Do not enable competing triggers blindly.
Test loopback behavior
Confirm the site can reach its own intended URL through HTTPS and that firewall, basic auth or DNS is not blocking cron requests.
Fix the failing scheduler layer
Restore a supported trigger method, resolve fatal errors or hosting task failures, and keep a record of changed settings.
Schedule one safe test post
Create a harmless private staging test, wait past the chosen time and verify its status changed as expected without manual intervention.
Correlate logs around the missed time
Compare host scheduler logs, PHP errors and scheduled event state for the exact timezone-adjusted timestamp.
Review persistent object caching and plugins
Investigate lock contention, cron filter changes or disabled hooks only after basic scheduler checks succeed.
Add non-invasive monitoring
Alert on overdue critical scheduled events and measure successful publish delay. Avoid running the same cron task concurrently across multiple nodes.
Interpret the results
Do not treat one successful retry as proof of a permanent fix. Compare the outcome with the following decision guide and note exactly which check changed the result.
| What you observe | Likely direction | Next safe action |
|---|---|---|
| Post remains Scheduled after its intended time | Traffic-dependent cron does not run near the target time | Verify post status and timezone: Check the post is Scheduled with a future date interpreted in Settings > General timezone. Compare local and UTC times, especially around daylight saving t. |
| Several scheduled tasks are overdue across the site | DISABLE_WP_CRON is true without a functioning server trigger | Inspect due events with a trusted tool: As an administrator, review scheduled publishing events and overdue jobs using supported tooling; avoid manually deleting unknown hooks. |
| Manual Publish works but automated scheduling does not | Loopback or PHP fatal errors block the due event | Test loopback behavior: Confirm the site can reach its own intended URL through HTTPS and that firewall, basic auth or DNS is not blocking cron requests. |
How to verify the fix
Pass condition: A test scheduled post publishes without manual page visits, cron execution logs show a healthy trigger and other due tasks no longer accumulate overdue.
Repeat the original operation at least twice, including after a normal restart or reconnect where appropriate. Confirm that unrelated features still work and that security, backups and access controls remain enabled. Record the tested version and time so future incidents can be compared accurately.
Common mistakes to avoid
- Avoid: Adding several WP-Cron plugins to fix the same issue
- Avoid: Changing timezone to make a delayed event appear correct
- Avoid: Deleting all cron entries and destroying plugin schedules
If the issue persists
If the host controls scheduler execution or outbound loopback restrictions, provide the overdue event names, site health output and sanitized logs to hosting support.
Include with a support request: the reproducible steps, exact error or status, affected and known-good versions, what changed, and the checks already completed. Remove passwords, tokens, payment data, private messages and personal identifiers from screenshots and logs before sharing.
Solution Checklist
Official reference
For product-specific menus and current behavior, consult WordPress documentation. Features and menu labels can vary by version; verify them against your environment before making lasting changes.
Disqus hosts the discussion. Comments load automatically as you approach this section and may use cookies.