# media_handle_sideload()

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

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

## Сигнатура

```php
media_handle_sideload( string[] $file_array, int $post_id, string $desc = null, array $post_data = array() ): int|WP_Error
```

## Описание

Обрабатывает файл, загруженный со стороны (side-loaded), так же, как media_handle_upload() обрабатывает загруженный файл.

## Параметры

- `$file_array` `string[]` — обязательный. Массив, представляющий массив загрузки $_FILES .
- `$post_id` `int` — необязательный. ID записи, с которой связано медиа.
- `$desc` `string` — необязательный, по умолчанию `null`. Описание файла, загруженного со стороны.
- `$post_data` `array` — необязательный, по умолчанию `array()`. Данные записи для переопределения.

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

`int|WP_Error` — WP_Error

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

Файл: `wp-admin/includes/media.php:464`

```php
function media_handle_sideload( $file_array, $post_id = 0, $desc = null, $post_data = array() ) {
	$overrides = array( 'test_form' => false );

	if ( isset( $post_data['post_date'] ) && substr( $post_data['post_date'], 0, 4 ) > 0 ) {
		$time = $post_data['post_date'];
	} else {
		$post = get_post( $post_id );
		if ( $post && substr( $post->post_date, 0, 4 ) > 0 ) {
			$time = $post->post_date;
		} else {
			$time = current_time( 'mysql' );
		}
	}

	$file = wp_handle_sideload( $file_array, $overrides, $time );

	if ( isset( $file['error'] ) ) {
		return new WP_Error( 'upload_error', $file['error'] );
	}

	$url     = $file['url'];
	$type    = $file['type'];
	$file    = $file['file'];
	$title   = preg_replace( '/\.[^.]+$/', '', wp_basename( $file ) );
	$content = '';
	$alt     = '';

	// Use image exif/iptc data for title and caption defaults if possible.
	$image_meta = wp_read_image_metadata( $file );

	if ( $image_meta ) {
		if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) {
			$title = $image_meta['title'];
		}

		if ( trim( $image_meta['caption'] ) ) {
			$content = $image_meta['caption'];
		}
		if ( trim( $image_meta['alt'] ) ) {
			$alt = $image_meta['alt'];
		}
	}

	if ( isset( $desc ) ) {
		$title = $desc;
	}

	// Construct the attachment array.
	$attachment = array_merge(
		array(
			'post_mime_type' => $type,
			'guid'           => $url,
			'post_parent'    => $post_id,
			'post_title'     => $title,
			'post_content'   => $content,
		),
		$post_data
	);

	// This should never be set as it would then overwrite an existing attachment.
	unset( $attachment['ID'] );

	// Save the attachment metadata.
	$attachment_id = wp_insert_attachment( $attachment, $file, $post_id, true );

	if ( trim( $alt ) ) {
		update_post_meta( $attachment_id, '_wp_attachment_image_alt', sanitize_text_field( $alt ) );
	}

	if ( ! is_wp_error( $attachment_id ) ) {
		wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $file ) );
	}

	return $attachment_id;
}
```

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

- 5.3.0 — The $post_id parameter was made optional.
- 2.6.0 — Introduced.

## Связанные

Использует: [`wp_read_image_metadata`](https://chugunov.pro/api-wordpress/functions/wp_read_image_metadata/), [`wp_generate_attachment_metadata`](https://chugunov.pro/api-wordpress/functions/wp_generate_attachment_metadata/), [`wp_handle_sideload`](https://chugunov.pro/api-wordpress/functions/wp_handle_sideload/), [`_wp_handle_upload`](https://chugunov.pro/api-wordpress/functions/_wp_handle_upload/), [`sanitize_title`](https://chugunov.pro/api-wordpress/functions/sanitize_title/), [`current_time`](https://chugunov.pro/api-wordpress/functions/current_time/), [`wp_insert_attachment`](https://chugunov.pro/api-wordpress/functions/wp_insert_attachment/), [`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/), [`wp_basename`](https://chugunov.pro/api-wordpress/functions/wp_basename/), [`sanitize_text_field`](https://chugunov.pro/api-wordpress/functions/sanitize_text_field/), [`get_post`](https://chugunov.pro/api-wordpress/functions/get_post/), [`is_wp_error`](https://chugunov.pro/api-wordpress/functions/is_wp_error/), `WP_Error::__construct`.
Используется в: `WP_Customize_Manager::import_theme_starter_content`, [`media_sideload_image`](https://chugunov.pro/api-wordpress/functions/media_sideload_image/).

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