WP_Upgrader::unpack_package() WordPress Method
The WP_Upgrader::unpack_package() method is used to unpack a plugin or theme update package. This method is called by the WP_Upgrader::upgrade() method.
WP_Upgrader::unpack_package( string $package, bool $delete_package = true ) #
Unpack a compressed package file.
Parameters
- $package
(string)(Required)Full path to the package file.
- $delete_package
(bool)(Optional) Whether to delete the package file after attempting to unpack it.
Default value: true
Return
(string|WP_Error) The path to the unpacked contents, or a WP_Error on failure.
Source
File: wp-admin/includes/class-wp-upgrader.php
public function unpack_package( $package, $delete_package = true ) { global $wp_filesystem; $this->skin->feedback( 'unpack_package' ); $upgrade_folder = $wp_filesystem->wp_content_dir() . 'upgrade/'; // Clean up contents of upgrade directory beforehand. $upgrade_files = $wp_filesystem->dirlist( $upgrade_folder ); if ( ! empty( $upgrade_files ) ) { foreach ( $upgrade_files as $file ) { $wp_filesystem->delete( $upgrade_folder . $file['name'], true ); } } // We need a working directory - strip off any .tmp or .zip suffixes. $working_dir = $upgrade_folder . basename( basename( $package, '.tmp' ), '.zip' ); // Clean up working directory. if ( $wp_filesystem->is_dir( $working_dir ) ) { $wp_filesystem->delete( $working_dir, true ); } // Unzip package to working directory. $result = unzip_file( $package, $working_dir ); // Once extracted, delete the package if required. if ( $delete_package ) { unlink( $package ); } if ( is_wp_error( $result ) ) { $wp_filesystem->delete( $working_dir, true ); if ( 'incompatible_archive' === $result->get_error_code() ) { return new WP_Error( 'incompatible_archive', $this->strings['incompatible_archive'], $result->get_error_data() ); } return $result; } return $working_dir; }
Expand full source codeCollapse full source codeView on TracView on GitHub
Changelog
Version | Description |
---|---|
2.8.0 | Introduced. |