init(); // Meet Requirements or Deactivate if (!Requirements::meet($flash)) { $hooks->deactivate(); return; } // Utils $this->utils(); // Ensure DayTidy cron jobs are scheduled after all plugins are loaded add_action('init', [PluginHooks::class, 'scheduleCrons'], 10, 0); // Flush WordPress rewrite rules only if needed RewriteRules::flush(); // Plugin $this->plugin(); // Features $this->features(); // Modules $this->modules(); // Add-ons $this->addons(); } private function utils(): void { // WordPress Life Cycle (new LifeCycle())->init(); // WordPress Kses (new Kses())->init(); // Assets (new Assets())->init(); // Taxonomy Metaboxes (new TaxonomyMetabox())->init(); // Shared AJAX handlers new Ajax\Autosuggest(); } private function plugin(): void { // The version-gated check covers first activation and schema-only plugin updates. add_action('admin_init', [CreateTables::class, 'ensureSchema']); add_action('admin_init', [Capabilities::class, 'maybeSync']); // Action Links (new ActionLinks())->init(); // I18n (new I18n())->init(); // Queue engagement before the shared package init hooks run. Engagement::register(); (new LicensingBootstrap())->init(); // Privacy tools (new Privacy())->init(); } private function features(): void { // Onboarding (new OnboardingModule())->init(); // Frontend Admin Bar Bar::instance()->init(); // Menus (new Menus())->init(); // Session Scheduler (new SessionScheduler())->init(); } private function modules(): void { // Modules (new ModuleLoader())->init(); } /** * Initialize Add-ons * @return void */ private function addons(): void { do_action('DayTidy/A__DayTidy/Bootstrap__addons/init'); } }