# image_downsize()

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

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

## Сигнатура

```php
image_downsize( int $id, string|int[] $size = 'medium' ): array|false
```

## Описание

URL может указывать на исходное изображение или на изменённую по размеру версию. Эта функция не создаёт новую уменьшенную копию, а лишь возвращает уже существующую, если она есть.
Плагин может использовать фильтр 'image_downsize', чтобы подключиться и предоставить услуги изменения размера изображений. Хук должен возвращать массив с теми же элементами, которые обычно возвращает функция.

## Параметры

- `$id` `int` — обязательный. Идентификатор вложения для изображения.
- `$size` `string|int[]` — необязательный, по умолчанию `'medium'`. Размер изображения. Принимает имя любого зарегистрированного размера изображения или массив значений ширины и высоты в пикселях (именно в таком порядке). Значение по умолчанию 'medium'.

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

`array|false` — 0 stringURL источника изображения. 1 intШирина изображения в пикселях. 2 intВысота изображения в пикселях. 3 boolЯвляется ли изображение изменённым по размеру.

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

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

```php
function image_downsize( $id, $size = 'medium' ) {
	$is_image = wp_attachment_is_image( $id );

	/**
	 * Filters whether to preempt the output of image_downsize().
	 *
	 * Returning a truthy value from the filter will effectively short-circuit
	 * down-sizing the image, returning that value instead.
	 *
	 * @since 2.5.0
	 *
	 * @param bool|array   $downsize Whether to short-circuit the image downsize.
	 * @param int          $id       Attachment ID for image.
	 * @param string|int[] $size     Requested image size. Can be any registered image size name, or
	 *                               an array of width and height values in pixels (in that order).
	 */
	$out = apply_filters( 'image_downsize', false, $id, $size );

	if ( $out ) {
		return $out;
	}

	$img_url          = wp_get_attachment_url( $id );
	$meta             = wp_get_attachment_metadata( $id );
	$width            = 0;
	$height           = 0;
	$is_intermediate  = false;
	$img_url_basename = wp_basename( $img_url );

	/*
	 * If the file isn't an image, attempt to replace its URL with a rendered image from its meta.
	 * Otherwise, a non-image type could be returned.
	 */
	if ( ! $is_image ) {
		if ( ! empty( $meta['sizes']['full'] ) ) {
			$img_url          = str_replace( $img_url_basename, $meta['sizes']['full']['file'], $img_url );
			$img_url_basename = $meta['sizes']['full']['file'];
			$width            = $meta['sizes']['full']['width'];
			$height           = $meta['sizes']['full']['height'];
		} else {
			return false;
		}
	}

	// Try for a new style intermediate size.
	$intermediate = image_get_intermediate_size( $id, $size );

	if ( $intermediate ) {
		$img_url         = str_replace( $img_url_basename, $intermediate['file'], $img_url );
		$width           = $intermediate['width'];
		$height          = $intermediate['height'];
		$is_intermediate = true;
	} elseif ( 'thumbnail' === $size && ! empty( $meta['thumb'] ) && is_string( $meta['thumb'] ) ) {
		// Fall back to the old thumbnail.
		$imagefile = get_attached_file( $id );
		$thumbfile = str_replace( wp_basename( $imagefile ), wp_basename( $meta['thumb'] ), $imagefile );

		if ( file_exists( $thumbfile ) ) {
			$info = wp_getimagesize( $thumbfile );

			if ( $info ) {
				$img_url         = str_replace( $img_url_basename, wp_basename( $thumbfile ), $img_url );
				$width           = $info[0];
				$height          = $info[1];
				$is_intermediate = true;
			}
		}
	}

	if ( ! $width && ! $height && isset( $meta['width'], $meta['height'] ) ) {
		// Any other type: use the real image.
		$width  = $meta['width'];
		$height = $meta['height'];
	}

	if ( $img_url ) {
		// We have the actual image size, but might need to further constrain it if content_width is narrower.
		list( $width, $height ) = image_constrain_size_for_editor( $width, $height, $size );

		return array( $img_url, $width, $height, $is_intermediate );
	}

	return false;
}
```

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

- 2.5.0 — Introduced.

## Связанные

Использует: [`wp_getimagesize`](https://chugunov.pro/api-wordpress/functions/wp_getimagesize/), [`image_get_intermediate_size`](https://chugunov.pro/api-wordpress/functions/image_get_intermediate_size/), [`image_constrain_size_for_editor`](https://chugunov.pro/api-wordpress/functions/image_constrain_size_for_editor/), [`wp_attachment_is_image`](https://chugunov.pro/api-wordpress/functions/wp_attachment_is_image/), [`wp_get_attachment_url`](https://chugunov.pro/api-wordpress/functions/wp_get_attachment_url/), [`wp_get_attachment_metadata`](https://chugunov.pro/api-wordpress/functions/wp_get_attachment_metadata/), [`get_attached_file`](https://chugunov.pro/api-wordpress/functions/get_attached_file/), [`wp_basename`](https://chugunov.pro/api-wordpress/functions/wp_basename/), [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/).
Используется в: [`image_size_input_fields`](https://chugunov.pro/api-wordpress/functions/image_size_input_fields/), [`get_image_tag`](https://chugunov.pro/api-wordpress/functions/get_image_tag/), [`wp_get_attachment_image_src`](https://chugunov.pro/api-wordpress/functions/wp_get_attachment_image_src/), `wp_xmlrpc_server::_prepare_media_item`.

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