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().


Top ↑

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.


Top ↑

Return

(bool|WP_Error)


Top ↑

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;
	}


Top ↑

Changelog

Changelog
VersionDescription
2.8.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by theĀ Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.