Plugin_Upgrader::delete_old_plugin( bool|WP_Error $removed, string $local_destination, string $remote_destination, array $plugin )

Delete 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)

$local_destination

(string) (Required)

$remote_destination

(string) (Required)

$plugin

(array) (Required)


Return

(WP_Error|bool)


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.
		if ( strpos($plugin, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory separator AND that it's not the root plugin folder
			$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;
	}


Changelog

Changelog
Version Description
WP-2.8.0 Introduced.