# wp_restore_image()

URL: https://chugunov.pro/api-wordpress/functions/wp_restore_image/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 2.9.0.

## Сигнатура

```php
wp_restore_image( int $post_id ): stdClass
```

## Описание

Восстанавливает метаданные указанного вложения.

## Параметры

- `$post_id` `int` — обязательный. ID записи вложения.

## Возвращаемое значение

`stdClass`

## Исходный код

Файл: `wp-admin/includes/image-edit.php:810`

```php
function wp_restore_image( $post_id ) {
	$meta             = wp_get_attachment_metadata( $post_id );
	$file             = get_attached_file( $post_id );
	$backup_sizes     = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true );
	$old_backup_sizes = $backup_sizes;
	$restored         = false;
	$msg              = new stdClass();

	if ( ! is_array( $backup_sizes ) ) {
		$msg->error = __( 'Cannot load image metadata.' );
		return $msg;
	}

	$parts         = pathinfo( $file );
	$suffix        = time() . rand( 100, 999 );
	$default_sizes = get_intermediate_image_sizes();

	if ( isset( $backup_sizes['full-orig'] ) && is_array( $backup_sizes['full-orig'] ) ) {
		$data = $backup_sizes['full-orig'];

		if ( $parts['basename'] !== $data['file'] ) {
			if ( defined( 'IMAGE_EDIT_OVERWRITE' ) && IMAGE_EDIT_OVERWRITE ) {
				// Delete only if it's an edited image.
				if ( preg_match( '/-e[0-9]{13}\./', $parts['basename'] ) ) {
					wp_delete_file( $file );
				}
			} elseif ( isset( $meta['width'], $meta['height'] ) ) {
				$backup_sizes[ "full-$suffix" ] = array(
					'width'    => $meta['width'],
					'height'   => $meta['height'],
					'filesize' => $meta['filesize'],
					'file'     => $parts['basename'],
				);
			}
		}

		$restored_file = path_join( $parts['dirname'], $data['file'] );
		$restored      = update_attached_file( $post_id, $restored_file );

		$meta['file']   = _wp_relative_upload_path( $restored_file );
		$meta['width']  = $data['width'];
		$meta['height'] = $data['height'];
		if ( isset( $data['filesize'] ) ) {
			/*
			 * Restore the original filesize if it was backed up.
			 *
			 * See https://core.trac.wordpress.org/ticket/59684.
			 */
			$meta['filesize'] = $data['filesize'];
		}
	}

	foreach ( $default_sizes as $default_size ) {
		if ( isset( $backup_sizes[ "$default_size-orig" ] ) ) {
			$data = $backup_sizes[ "$default_size-orig" ];

			if ( isset( $meta['sizes'][ $default_size ] ) && $meta['sizes'][ $default_size ]['file'] !== $data['file'] ) {
				if ( defined( 'IMAGE_EDIT_OVERWRITE' ) && IMAGE_EDIT_OVERWRITE ) {
					// Delete only if it's an edited image.
					if ( preg_match( '/-e[0-9]{13}-/', $meta['sizes'][ $default_size ]['file'] ) ) {
						$delete_file = path_join( $parts['dirname'], $meta['sizes'][ $default_size ]['file'] );
						wp_delete_file( $delete_file );
					}
				} else {
					$backup_sizes[ "$default_size-{$suffix}" ] = $meta['sizes'][ $default_size ];
				}
			}

			$meta['sizes'][ $default_size ] = $data;
		} else {
			unset( $meta['sizes'][ $default_size ] );
		}
	}

	if ( ! wp_update_attachment_metadata( $post_id, $meta )
		|| ( $old_backup_sizes !== $backup_sizes && ! update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes ) )
	) {
		$msg->error = __( 'Cannot save image metadata.' );
		return $msg;
	}

	if ( ! $restored ) {
		$msg->error = __( 'Image metadata is inconsistent.' );
	} else {
		$msg->msg = __( 'Image restored successfully.' );

		if ( defined( 'IMAGE_EDIT_OVERWRITE' ) && IMAGE_EDIT_OVERWRITE ) {
			delete_post_meta( $post_id, '_wp_attachment_backup_sizes' );
		}
	}

	return $msg;
}
```

## История изменений

- 2.9.0 — Introduced.

## Связанные

Использует: [`wp_delete_file`](https://chugunov.pro/api-wordpress/functions/wp_delete_file/), [`path_join`](https://chugunov.pro/api-wordpress/functions/path_join/), [`get_intermediate_image_sizes`](https://chugunov.pro/api-wordpress/functions/get_intermediate_image_sizes/), [`wp_get_attachment_metadata`](https://chugunov.pro/api-wordpress/functions/wp_get_attachment_metadata/), [`wp_update_attachment_metadata`](https://chugunov.pro/api-wordpress/functions/wp_update_attachment_metadata/), [`update_post_meta`](https://chugunov.pro/api-wordpress/functions/update_post_meta/), [`delete_post_meta`](https://chugunov.pro/api-wordpress/functions/delete_post_meta/), [`get_attached_file`](https://chugunov.pro/api-wordpress/functions/get_attached_file/), [`update_attached_file`](https://chugunov.pro/api-wordpress/functions/update_attached_file/), [`_wp_relative_upload_path`](https://chugunov.pro/api-wordpress/functions/_wp_relative_upload_path/), [`__`](https://chugunov.pro/api-wordpress/functions/__/), [`get_post_meta`](https://chugunov.pro/api-wordpress/functions/get_post_meta/).
Используется в: [`wp_ajax_image_editor`](https://chugunov.pro/api-wordpress/functions/wp_ajax_image_editor/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/wp_restore_image/
