hooks(); ( new AICitare_REST() )->hooks(); ( new AICitare_Metabox() )->hooks(); ( new AICitare_LLMS() )->hooks(); ( new AICitare_Schema() )->hooks(); ( new AICitare_Content() )->hooks(); ( new AICitare_Visibility() )->hooks(); ( new AICitare_Reports() )->hooks(); ( new AICitare_GSC() )->hooks(); ( new AICitare_Alerts() )->hooks(); } add_action( 'plugins_loaded', 'aicitare_boot' ); // Run pending DB/schema migrations for installs updated via WordPress.org // (activation hooks don't fire on update). Admin-only, and a no-op once current. add_action( 'admin_init', array( 'AICitare_Activator', 'maybe_upgrade' ) ); // Translations load automatically (WP 4.6+) from the Domain Path header // (/languages) and translate.wordpress.org — no manual textdomain call needed. // Custom monthly cron interval for scheduled reports. add_filter( 'cron_schedules', function ( $schedules ) { // phpcs:ignore WordPress.WP.CronInterval $schedules['aicitare_monthly'] = array( 'interval' => 30 * DAY_IN_SECONDS, 'display' => __( 'Once Monthly (GEO)', 'aicitare' ) ); return $schedules; } );