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


Top ↑

Return

(string|WP_Error) The path to the unpacked contents, or a WP_Error on failure.


Top ↑

Source

File: wp-admin/includes/class-wp-upgrader.php

305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
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;
}


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.