WP-Cron Remediation Playbook
Use this runbook when Site Health reports late scheduled events (e.g., jetpack_sync_cron) or when WooCommerce automations stop firing.
1. Confirm the symptom
Site Health
Visit https://www.renewed-renaissance.com/wp-admin/site-health.php. Look for warnings such as "A scheduled event is late".
WP-CLI cron listing
cd /mnt/SSD1/mrepos/bitbucket.org/wilsonify/renewed-renaissance-woocommerce
docker compose run --rm wordpress \
wp cron event list --fields=hook,next_run,recurrence --format=table
Hooks with next_run timestamps in the past are overdue.
Action Scheduler queue (WooCommerce)
docker compose run --rm wordpress wp action-scheduler list --status=pending --per-page=20
A large pending backlog indicates workers aren't running.
2. Run all due events
docker compose run --rm wordpress wp cron event run --due-now
3. Target specific hooks
docker compose run --rm wordpress wp cron event run jetpack_sync_cron
For hooks with multiple scheduled instances, include --all:
docker compose run --rm wordpress wp cron event run jetpack_sync_cron --all
4. Re-scan the schedule
docker compose run --rm wordpress \
wp cron event list --fields=hook,next_run,recurrence --format=table
Healthy hooks should show next-run timestamps in the future.
5. Validate in Site Health
Reload the Site Health page. Warnings about late cron jobs usually clear within one page refresh.
6. Common causes & fixes
| Cause | Diagnostic | Fix |
|---|---|---|
No traffic hitting wp-cron.php |
next_run stays in the past |
Set DISABLE_WP_CRON to false or run wp cron event run --due-now via host cron. |
| Action Scheduler stuck | wp action-scheduler list shows hundreds of pending rows |
Manually run wp action-scheduler run. |
| Hook throws fatal error | docker compose logs wordpress shows PHP fatal during cron |
Fix the code/plugin causing the fatal, then rerun the event. |
| Jetpack sync disabled | Jetpack not connected or site private | Reconnect Jetpack via wp-admin/admin.php?page=jetpack#/dashboard. |
7. Automating prevention
- Add a host-level cron entry to run
docker compose run --rm wordpress wp cron event run --due-nowevery minute. - Consider adding a WP-CLI Doctor check to flag hooks whose
next_runis older than five minutes.