diff --git a/src/wp-includes/plugin.php b/src/wp-includes/plugin.php index 22ead3632b..4dbab7412a 100644 --- a/src/wp-includes/plugin.php +++ b/src/wp-includes/plugin.php @@ -840,10 +840,12 @@ function register_uninstall_hook( $file, $callback ) { * cases. Emphasis should be put on using the 'uninstall.php' way of * uninstalling the plugin. */ - $uninstallable_plugins = (array) get_option( 'uninstall_plugins' ); - $uninstallable_plugins[ plugin_basename( $file ) ] = $callback; - - update_option( 'uninstall_plugins', $uninstallable_plugins ); + $uninstallable_plugins = (array) get_option( 'uninstall_plugins' ); + $plugin_basename = plugin_basename( $file ); + if ( ! isset( $uninstallable_plugins[ $plugin_basename ] ) || $uninstallable_plugins[ $plugin_basename ] !== $callback ) { + $uninstallable_plugins[ $plugin_basename ] = $callback; + update_option( 'uninstall_plugins', $uninstallable_plugins ); + } } /**