WP_Upgrader::download_packagepublicWP 2.8.0

Downloads a package for a WordPress core, plugin, theme, or translation upgrade.

Method of the class: WP_Upgrader{}

Hooks from the method

Returns

String|WP_Error. The full path to the downloaded package file, or a WP_Error object.

Usage

$WP_Upgrader = new WP_Upgrader();
$WP_Upgrader->download_package( $package, $check_signatures, $hook_extra );
$package(string) (required)
The URI of the package. May be a remote URL or local file path. If this is the full path to an existing local file, it will be returned untouched.
$check_signatures(true|false)
Whether to validate file signatures.
Default: false
$hook_extra(array)
Extra arguments to pass to the filter hooks.
Default: empty array

Changelog

Since 2.8.0 Introduced.
Since 5.2.0 Added the $check_signatures parameter.
Since 5.5.0 Added the $hook_extra parameter.

WP_Upgrader::download_package() code WP 7.0

public function download_package( $package, $check_signatures = false, $hook_extra = array() ) {
	/**
	 * Filters whether to download a package for a WordPress core, plugin, theme, or translation upgrade.
	 *
	 * Return a non-false value to short-circuit the download and return that value instead.
	 *
	 * @since 3.7.0
	 * @since 5.5.0 Added the `$hook_extra` parameter.
	 *
	 * @param false|string|WP_Error $reply      Whether to short-circuit the download, the path to the downloaded package,
	 *                                          or a WP_Error object. Default false.
	 * @param string                $package    The package URI. May be a remote URL or local file path.
	 * @param WP_Upgrader           $upgrader   The WP_Upgrader instance.
	 * @param array                 $hook_extra Extra arguments passed to hooked filters.
	 */
	$reply = apply_filters( 'upgrader_pre_download', false, $package, $this, $hook_extra );
	if ( false !== $reply ) {
		return $reply;
	}

	if ( ! preg_match( '!^(http|https|ftp)://!i', $package ) && file_exists( $package ) ) { // Local file or remote?
		return $package; // Must be a local file.
	}

	if ( empty( $package ) ) {
		return new WP_Error( 'no_package', $this->strings['no_package'] );
	}

	$this->skin->feedback( 'downloading_package', $package );

	$download_file = download_url( $package, 300, $check_signatures );

	if ( is_wp_error( $download_file ) && ! $download_file->get_error_data( 'softfail-filename' ) ) {
		return new WP_Error( 'download_failed', $this->strings['download_failed'], $download_file->get_error_message() );
	}

	return $download_file;
}