run(); } add_action('plugins_loaded', 'adsd_new_bootstrap_plugin'); /** * Activation hook: initialize default options and run migrations. * * @since 1.0.0 */ function adsd_new_on_activate(): void { $container = (new Plugin())->get_container(); $options_repository = $container->get('options_repository'); $options_repository->ensure_defaults(); // Set activation time for review notice if (!get_option('adsd_activation_time')) { update_option('adsd_activation_time', time()); } if (!wp_next_scheduled(Plugin::CRON_HOOK)) { wp_schedule_event(time() + HOUR_IN_SECONDS, 'daily', Plugin::CRON_HOOK); } } register_activation_hook(__FILE__, 'adsd_new_on_activate'); /** * Deactivation hook: cleanup if needed. * * @since 1.0.0 */ function adsd_new_on_deactivate(): void { wp_clear_scheduled_hook(Plugin::CRON_HOOK); } register_deactivation_hook(__FILE__, 'adsd_new_on_deactivate'); // Plugin data removal lives in uninstall.php, which WordPress runs on delete. // WordPress translation loading is handled automatically since WP 4.6 // for plugins distributed through WordPress.org repository.