query( $wpdb->prepare( "DELETE FROM {$wpdb->postmeta} WHERE meta_key LIKE %s", $wpdb->esc_like( $meta_prefix ) . '%' ) ); // Term SEO: title/desc/keyphrase delle tassonomie vivono nei termmeta. $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->termmeta} WHERE meta_key LIKE %s", $wpdb->esc_like( $meta_prefix ) . '%' ) ); } foreach ( [ 'aisa_', 'yaime_' ] as $prefix ) { $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like( $prefix ) . '%' ) ); $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->usermeta} WHERE meta_key LIKE %s", $wpdb->esc_like( $prefix ) . '%' ) ); } // Deschedula gli eventi cron del plugin (altrimenti restano orfani nel crontab WP). foreach ( [ 'aisa_sched_kickoff', 'aisa_gbp_weekly_sync', 'aisa_indexnow_daily', 'aisa_autoseo_cron', 'aisa_sitemap_images_build' ] as $hook ) { wp_clear_scheduled_hook( $hook ); } // 🖼️ AISA Vision al caricamento: gli eventi hanno ARGOMENTI (id allegato + modo), // quindi servono wp_unschedule_hook (li toglie tutti, qualunque argomento). if ( function_exists( 'wp_unschedule_hook' ) ) { wp_unschedule_hook( 'aisa_vision_upload' ); } // 🕘 La tabella dello storico SEO (`aisa_seo_history`) resta: è la cronologia delle modifiche del cliente, MAI un DROP. /* * ⚠️ ANTI-ABUSO — NON rimuovere la tabella `{$wpdb->prefix}aisa_ledger`. * Conserva il consumo cumulativo del piano Free (operazioni usate) così che, * disinstallando e reinstallando il plugin, il budget Free NON si azzeri. * È volutamente l'unico dato che sopravvive alla pulizia. Non aggiungere qui * un DROP TABLE per questa tabella. */