has_cap( 'manage_metaforge' ) ) { $metaforge_role->remove_cap( 'manage_metaforge' ); } // 3. Drop custom database tables global $wpdb; // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Hardcoded table name with $wpdb->prefix cannot be prepared in WP < 6.2; dropping custom table upon uninstall is expected behavior. $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}metaforge_ai_memory" ); // 4. Clear transient caches & leftover options delete_transient( 'metaforge_all_field_groups_cache' ); delete_transient( 'metaforge_field_flat_map' ); delete_transient( 'metaforge_github_updater' ); delete_option( 'metaforge_role_restrictions' ); delete_option( 'metaforge_ai_settings' ); delete_option( 'metaforge_db_version' ); delete_option( 'metaforge_post_order_settings' ); delete_option( 'metaforge_taxonomy_order_settings' );