WP-Cron schedules background tasks — fires on page loads, not real cron; use server cron for reliability.
WP-Cron Scheduled Tasks
[['before'=>'30 days ago']],'numberposts'=>-1]);
foreach ($old as $p) wp_delete_post($p->ID, true);
error_log('Cleanup ran: ' . date('Y-m-d H:i:s'));
});
// Unschedule on deactivation
register_deactivation_hook(__FILE__, function() {
wp_clear_scheduled_hook('my_daily_cleanup');
});
// Custom interval
add_filter('cron_schedules', function($s) {
$s['every_5min'] = ['interval'=>300,'display'=>'Every 5 min'];
return $s;
});
// Note: WP-Cron fires on page loads
// For reliability, use server cron:
# */5 * * * * wget -q -O - https://mysite.com/wp-cron.php?doing_wp_cron