wp_get_attachment_image_sizes()WP 4.4.0

Получает значения размеров указанной картинки-вложения для атрибута sizes.

Используется в связке с функцией: wp_get_attachment_image_srcset()

О HTML атрибуте sizes

sizes содержит список элементов (через запятую), где каждый элемент описывает размер изображения по отношению к ширине экрана (области просмотра).

Использование sizes дает браузеру дополнительную информацию, чтобы правильно выбрать подходящую картинку из srcset и начать её загрузку, как только он увидит тег <img>, не дожидаясь, парсинга css стилей.

Синтаксис:

<img
	srcset="small.jpg 300w,
			medium.jpg 600w,
			large.jpg 900w"

	sizes="(max-width: 300px) 100vw,
			(max-width: 600px) 50vw,
			(max-width: 900px) 33vw,
			900px"
	src="image.jpg"
/>

Подробнее про scrset и sizes.

Работает на основе: wp_get_attachment_image_src(), wp_calculate_image_sizes()
1 раз — 0.000911 сек (медленно) | 50000 раз — 30 сек (медленно)

Хуков нет.

Возвращает

Строку|false. Значение размеров, предназначенное для использования в атрибуте 'sizes'. Например: (max-width: 709px) 85vw, (max-width: 909px) 67vw.

Использование

wp_get_attachment_image_sizes( $attachment_id, $size, $image_meta );
$attachment_id(число) (обязательный)
ID картинки вложения значение атрибута sizes для которого нужно получить..
$size(массив/строка)

Название размера картинки.
Может принимать любой зарегистрированный размер или массив: array(100,150), где 100 - ширина, а 150 высота в пикселях.

Значение передается в функцию wp_get_attachment_image_src() еще описание смотрите там.
По умолчанию: 'medium'

$image_meta(массив)

Метаданные картинки, в формате который возвращается функцией: wp_get_attachment_metadata().

Или можно получить метаданные вложения так: get_post_meta( $attachment_id, '_wp_attachment_metadata', true );

По умолчанию: null

Примеры

0

#1 Просто получим размеры картинки для sizes атрибута

echo wp_get_attachment_image_sizes( 10, 'full' );
// выведет:
// (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px
0

#2 Использование в IMG теге

<img
	src="<?php echo wp_get_attachment_image_url( $attachment_id, 'full' ) ?>"
	srcset="<?php echo wp_get_attachment_image_srcset( $attachment_id, 'full' ) ?>"
	sizes="<?php echo wp_get_attachment_image_sizes( $attachment_id, 'full' ) ?>"
>

Получим:

<img
	src="http://example.com/wp-content/uploads/2015/12/image.png"
	srcset="http://example.com/wp-content/uploads/2015/12/image-240x300.png 240w, http://example.com/wp-content/uploads/2015/12/image.png 700w"
	sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px"
>

Заметки

Список изменений

С версии 4.4.0 Введена.

Код wp_get_attachment_image_sizes() WP 6.5.2

function wp_get_attachment_image_sizes( $attachment_id, $size = 'medium', $image_meta = null ) {
	$image = wp_get_attachment_image_src( $attachment_id, $size );

	if ( ! $image ) {
		return false;
	}

	if ( ! is_array( $image_meta ) ) {
		$image_meta = wp_get_attachment_metadata( $attachment_id );
	}

	$image_src  = $image[0];
	$size_array = array(
		absint( $image[1] ),
		absint( $image[2] ),
	);

	return wp_calculate_image_sizes( $size_array, $image_src, $image_meta, $attachment_id );
}