From f29b2e02ac75e9c2ffd4ea7d42fc3d34eb3e4db0 Mon Sep 17 00:00:00 2001 From: Dion Hulse Date: Tue, 19 Nov 2013 04:08:09 +0000 Subject: [PATCH] Plugin Deletion: Properly clear the cache when multiple plugins are deleted. Props jdgrimes. Fixes #26065 Built from https://develop.svn.wordpress.org/trunk@26262 git-svn-id: http://core.svn.wordpress.org/trunk@26168 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/includes/plugin.php | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/wp-admin/includes/plugin.php b/wp-admin/includes/plugin.php index 4e2126a368..9a25da5eae 100644 --- a/wp-admin/includes/plugin.php +++ b/wp-admin/includes/plugin.php @@ -803,15 +803,21 @@ function delete_plugins($plugins, $redirect = '' ) { $errors[] = $plugin_file; } + // Remove deleted plugins from the plugin updates list. + if ( $current = get_site_transient('update_plugins') ) { + // Don't remove the plugins that weren't deleted. + $deleted = array_diff( $plugins, $errors ); + + foreach ( $deleted as $plugin_file ) { + unset( $current->response[ $plugin_file ] ); + } + + set_site_transient( 'update_plugins', $current ); + } + if ( ! empty($errors) ) return new WP_Error('could_not_remove_plugin', sprintf(__('Could not fully remove the plugin(s) %s.'), implode(', ', $errors)) ); - // Force refresh of plugin update information - if ( $current = get_site_transient('update_plugins') ) { - unset( $current->response[ $plugin_file ] ); - set_site_transient('update_plugins', $current); - } - return true; }