get_results( $wpdb->prepare( "SELECT option_name, option_value FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like(self::OPTION_PREFIX) . '%_manifest' ), ARRAY_A ); $snapshots = []; foreach ($results as $row) { // Extract plugin slug from option name: thinkrank_snapshot_{plugin}_manifest $option_name = $row['option_name']; $plugin = str_replace([self::OPTION_PREFIX, '_manifest'], '', $option_name); $manifest = Safe_Unserializer::unserialize($row['option_value']); if (is_array($manifest)) { $snapshots[$plugin] = $manifest; } } return $snapshots; } /** * Delete all snapshot data for a plugin * * @param string $plugin Plugin slug * @return int Number of options deleted */ public static function delete_snapshot(string $plugin): int { global $wpdb; // Find all options for this plugin's snapshot $option_names = $wpdb->get_col( $wpdb->prepare( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like(self::OPTION_PREFIX . $plugin . '_') . '%' ) ); $deleted = 0; foreach ($option_names as $option_name) { if (delete_option($option_name)) { $deleted++; } } return $deleted; } }