disconnect(); } catch ( Throwable $storebridge_error ) { // Uninstalling must not fail when the cloud is unreachable; remove the key locally instead. Storebridge\Connection\Disconnector::delete_woo_key( $storebridge_settings->woo_api_key_id() ); } delete_option( 'storebridge_settings' ); delete_option( 'storebridge_review_banner' ); delete_metadata( 'user', 0, 'storebridge_review_banner_dismissed', '', true ); delete_metadata( 'user', 0, 'storebridge_dismissed_notices', '', true ); delete_transient( 'storebridge_status_checked' ); delete_transient( 'storebridge_account_checked' ); delete_transient( 'storebridge_markets' ); delete_transient( 'storebridge_activation_redirect' ); if ( function_exists( 'as_unschedule_all_actions' ) ) { as_unschedule_all_actions( '', array(), 'storebridge' ); } $storebridge_meta_like = $wpdb->esc_like( '_storebridge_' ) . '%'; // phpcs:disable WordPress.DB.DirectDatabaseQuery -- One-off bulk cleanup on uninstall; no API exists for deleting meta by key prefix. // Every other option and transient the plugin creates (order locks, replay markers, one-off flags) also starts with `storebridge_`. $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s OR option_name LIKE %s OR option_name LIKE %s", $wpdb->esc_like( 'storebridge_' ) . '%', $wpdb->esc_like( '_transient_storebridge_' ) . '%', $wpdb->esc_like( '_transient_timeout_storebridge_' ) . '%' ) ); wp_cache_delete( 'alloptions', 'options' ); $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->postmeta} WHERE meta_key LIKE %s", $storebridge_meta_like ) ); $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->termmeta} WHERE meta_key LIKE %s", $storebridge_meta_like ) ); $storebridge_orders_meta = $wpdb->prefix . 'wc_orders_meta'; if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $storebridge_orders_meta ) ) === $storebridge_orders_meta ) { $wpdb->query( $wpdb->prepare( 'DELETE FROM %i WHERE meta_key LIKE %s', $storebridge_orders_meta, $storebridge_meta_like ) ); } // phpcs:enable WordPress.DB.DirectDatabaseQuery