# image_get_intermediate_size()

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

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

## Сигнатура

```php
image_get_intermediate_size( int $post_id, string|int[] $size = 'thumbnail' ): array|false
```

## Описание

Параметр $size может быть массивом с шириной и высотой соответственно.
Если размер совпадает с массивом метаданных 'sizes' по ширине и высоте, будет использован он. Если прямого совпадения нет, будет использован ближайший размер изображения, превышающий указанный. Если ничего не найдено, функция завершится и вернёт false.
Метаданные 'sizes' используются для совместимых размеров, которые можно передать в значении параметра $size.
Путь URL будет возвращён, когда параметр $size является строкой.
Если вы передаёте массив в $size, стоит рассмотреть использование add_image_size(), чтобы генерировалась обрезанная версия. Это гораздо эффективнее, чем искать изображение ближайшего размера, а затем масштабировать его средствами браузера.

## Параметры

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

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

`array|false` — $size file stringИмя файла изображения. width intШирина изображения в пикселях. height intВысота изображения в пикселях. path stringПуть к изображению относительно каталога загрузок. url stringURL изображения.

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

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

```php
function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) {
	$imagedata = wp_get_attachment_metadata( $post_id );

	if ( ! $size || ! is_array( $imagedata ) || empty( $imagedata['sizes'] ) ) {
		return false;
	}

	$data = array();

	// Find the best match when '$size' is an array.
	if ( is_array( $size ) ) {
		$candidates = array();

		if ( ! isset( $imagedata['file'] ) && isset( $imagedata['sizes']['full'] ) ) {
			$imagedata['height'] = $imagedata['sizes']['full']['height'];
			$imagedata['width']  = $imagedata['sizes']['full']['width'];
		}

		foreach ( $imagedata['sizes'] as $_size => $data ) {
			// If there's an exact match to an existing image size, short circuit.
			if ( (int) $data['width'] === (int) $size[0] && (int) $data['height'] === (int) $size[1] ) {
				$candidates[ $data['width'] * $data['height'] ] = $data;
				break;
			}

			// If it's not an exact match, consider larger sizes with the same aspect ratio.
			if ( $data['width'] >= $size[0] && $data['height'] >= $size[1] ) {
				// If '0' is passed to either size, we test ratios against the original file.
				if ( 0 === $size[0] || 0 === $size[1] ) {
					$same_ratio = wp_image_matches_ratio( $data['width'], $data['height'], $imagedata['width'], $imagedata['height'] );
				} else {
					$same_ratio = wp_image_matches_ratio( $data['width'], $data['height'], $size[0], $size[1] );
				}

				if ( $same_ratio ) {
					$candidates[ $data['width'] * $data['height'] ] = $data;
				}
			}
		}

		if ( ! empty( $candidates ) ) {
			// Sort the array by size if we have more than one candidate.
			if ( 1 < count( $candidates ) ) {
				ksort( $candidates );
			}

			$data = array_shift( $candidates );
		} elseif ( ! empty( $imagedata['sizes']['thumbnail'] )
			&& $size[0] <= $imagedata['sizes']['thumbnail']['width']
			&& $size[1] <= $imagedata['sizes']['thumbnail']['width']
		) {
			/*
			 * When the size requested is smaller than the thumbnail dimensions, we
			 * fall back to the thumbnail size to maintain backward compatibility with
			 * pre-4.6 versions of WordPress.
			 */
			$data = $imagedata['sizes']['thumbnail'];
		} else {
			return false;
		}

		// Constrain the width and height attributes to the requested values.
		list( $data['width'], $data['height'] ) = image_constrain_size_for_editor( $data['width'], $data['height'], $size );

	} elseif ( ! empty( $imagedata['sizes'][ $size ] ) ) {
		$data = $imagedata['sizes'][ $size ];
	}

	// If we still don't have a match at this point, return false.
	if ( empty( $data ) ) {
		return false;
	}

	// Include the full filesystem path of the intermediate file.
	if ( empty( $data['path'] ) && ! empty( $data['file'] ) && ! empty( $imagedata['file'] ) ) {
		$file_url     = wp_get_attachment_url( $post_id );
		$data['path'] = path_join( dirname( $imagedata['file'] ), $data['file'] );
		$data['url']  = path_join( dirname( $file_url ), $data['file'] );
	}

	/**
	 * Filters the output of image_get_intermediate_size()
	 *
	 * @since 4.4.0
	 *
	 * @see image_get_intermediate_size()
	 *
	 * @param array        $data    Array of file relative path, width, and height on success. May also include
	 *                              file absolute path and URL.
	 * @param int          $post_id The ID of the image attachment.
	 * @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).
	 */
	return apply_filters( 'image_get_intermediate_size', $data, $post_id, $size );
}
```

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

- 2.5.0 — Introduced.

## Связанные

Использует: [`wp_image_matches_ratio`](https://chugunov.pro/api-wordpress/functions/wp_image_matches_ratio/), [`path_join`](https://chugunov.pro/api-wordpress/functions/path_join/), [`image_constrain_size_for_editor`](https://chugunov.pro/api-wordpress/functions/image_constrain_size_for_editor/), [`wp_get_attachment_metadata`](https://chugunov.pro/api-wordpress/functions/wp_get_attachment_metadata/), [`wp_get_attachment_url`](https://chugunov.pro/api-wordpress/functions/wp_get_attachment_url/), [`apply_filters`](https://chugunov.pro/api-wordpress/functions/apply_filters/).
Используется в: [`wp_image_editor`](https://chugunov.pro/api-wordpress/functions/wp_image_editor/), [`_load_image_to_edit_path`](https://chugunov.pro/api-wordpress/functions/_load_image_to_edit_path/), [`image_downsize`](https://chugunov.pro/api-wordpress/functions/image_downsize/).

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