WP_Upgrader::restore_temp_backup( array[] $temp_backups = array() ): bool|WP_Error

In this article

Restores the plugin or theme from temporary backup.

Parameters

$temp_backupsarray[]optional
An array of temporary backups.
  • ...$0 array
    Information about the backup.
    • dir string
      The temporary backup location in the upgrade-temp-backup directory.
    • slug string
      The item’s slug.
    • src string
      The directory where the original is stored. For example, WP_PLUGIN_DIR.

Default:array()

Return

bool|WP_Error True on success, false on early exit, otherwise WP_Error.

Source

public function restore_temp_backup( array $temp_backups = array() ) {
	global $wp_filesystem;

	$errors = new WP_Error();

	if ( empty( $temp_backups ) ) {
		$temp_backups = $this->temp_restores;
	}

	foreach ( $temp_backups as $args ) {
		if ( empty( $args['slug'] ) || empty( $args['src'] ) || empty( $args['dir'] ) ) {
			return false;
		}

		if ( ! $wp_filesystem->wp_content_dir() ) {
			$errors->add( 'fs_no_content_dir', $this->strings['fs_no_content_dir'] );
			return $errors;
		}

		$src      = $wp_filesystem->wp_content_dir() . 'upgrade-temp-backup/' . $args['dir'] . '/' . $args['slug'];
		$dest_dir = $wp_filesystem->find_folder( $args['src'] );
		$dest     = trailingslashit( $dest_dir ) . $args['slug'];

		if ( $wp_filesystem->is_dir( $src ) ) {
			// Cleanup.
			if ( $wp_filesystem->is_dir( $dest ) && ! $wp_filesystem->delete( $dest, true ) ) {
				$errors->add(
					'fs_temp_backup_delete',
					sprintf( $this->strings['temp_backup_restore_failed'], $args['slug'] )
				);
				continue;
			}

			// Move it.
			$result = move_dir( $src, $dest, true );
			if ( is_wp_error( $result ) ) {
				$errors->add(
					'fs_temp_backup_delete',
					sprintf( $this->strings['temp_backup_restore_failed'], $args['slug'] )
				);
				continue;
			}
		}
	}

	return $errors->has_errors() ? $errors : true;
}

Changelog

VersionDescription
6.6.0Added the $temp_backups parameter.
6.3.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.