Plugin_Upgrader::delete_old_plugin() WordPress Method
The delete_old_plugin() method is used to delete an old plugin from a WordPress site. This method is called by the WordPress upgrade system when a new plugin is installed.
Plugin_Upgrader::delete_old_plugin( bool|WP_Error $removed, string $local_destination, string $remote_destination, array $plugin ) #
Deletes the old plugin during an upgrade.
Description
Hooked to the ‘upgrader_clear_destination’ filter by Plugin_Upgrader::upgrade() and Plugin_Upgrader::bulk_upgrade().
Parameters
- $removed
(bool|WP_Error)(Required)Whether the destination was cleared. True on success, WP_Error on failure.
- $local_destination
(string)(Required)The local package destination.
- $remote_destination
(string)(Required)The remote package destination.
- $plugin
(array)(Required)Extra arguments passed to hooked filters.
Return
(bool|WP_Error)
Source
File: wp-admin/includes/class-plugin-upgrader.php
public function delete_old_plugin( $removed, $local_destination, $remote_destination, $plugin ) { global $wp_filesystem; if ( is_wp_error( $removed ) ) { return $removed; // Pass errors through. } $plugin = isset( $plugin['plugin'] ) ? $plugin['plugin'] : ''; if ( empty( $plugin ) ) { return new WP_Error( 'bad_request', $this->strings['bad_request'] ); } $plugins_dir = $wp_filesystem->wp_plugins_dir(); $this_plugin_dir = trailingslashit( dirname( $plugins_dir . $plugin ) ); if ( ! $wp_filesystem->exists( $this_plugin_dir ) ) { // If it's already vanished. return $removed; } // If plugin is in its own directory, recursively delete the directory. // Base check on if plugin includes directory separator AND that it's not the root plugin folder. if ( strpos( $plugin, '/' ) && $this_plugin_dir !== $plugins_dir ) { $deleted = $wp_filesystem->delete( $this_plugin_dir, true ); } else { $deleted = $wp_filesystem->delete( $plugins_dir . $plugin ); } if ( ! $deleted ) { return new WP_Error( 'remove_old_failed', $this->strings['remove_old_failed'] ); } return true; }
Expand full source codeCollapse full source codeView on TracView on GitHub
Changelog
Version | Description |
---|---|
2.8.0 | Introduced. |