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 { if (!function_exists('is_multisite')) { return; } $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()); } } register_activation_hook(__FILE__, 'adsd_new_on_activate'); /** * Deactivation hook: cleanup if needed. * * @since 1.0.0 */ function adsd_new_on_deactivate(): void { // Clean up any temporary data or scheduled events if needed. wp_clear_scheduled_hook('adsd_new_cleanup_expired_rules'); } register_deactivation_hook(__FILE__, 'adsd_new_on_deactivate'); /** * Uninstall hook: remove all plugin data. * * @since 1.0.0 */ function adsd_new_on_uninstall(): void { if (!current_user_can('delete_plugins')) { return; } // Remove all plugin options. delete_option('adsd_new_options'); delete_option('adsd_new_logging_enabled'); // Clear any scheduled events. wp_clear_scheduled_hook('adsd_new_cleanup_expired_rules'); } register_uninstall_hook(__FILE__, 'adsd_new_on_uninstall'); // WordPress translation loading is handled automatically since WP 4.6 // for plugins distributed through WordPress.org repository.