WEEK_IN_SECONDS, 'display' => __( 'Once Weekly', 'accessmate' ), ]; } if ( ! isset( $schedules['monthly'] ) ) { $schedules['monthly'] = [ 'interval' => 30 * DAY_IN_SECONDS, 'display' => __( 'Once Monthly', 'accessmate' ), ]; } return $schedules; } /** * Runs on the `accessmate_scheduled_scan` cron event. Pro-only, and it * no longer scans anything itself — WP-Cron has no DOM/JS runtime, so it * can't drive the axe-core pipeline the rest of the app uses. It only * marks the scan "due"; an authorized admin's dashboard session then * claims and runs it through the same axe-core pipeline as Bulk/ * Individual scans — see AccessMate_Pro::mark_scheduled_scan_due() and * useScheduledScanRunner.ts. register() never schedules this event for a * Free/unlicensed site, so the class_exists() guard here is just a * safety net for a stray event left over from before a licence lapsed. */ public static function run(): void { if ( class_exists( 'AccessMate_Pro' ) ) { AccessMate_Pro::mark_scheduled_scan_due(); } } }