WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

wp_get_attachment_image_sizes() WP 4.4.0

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

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

Об атрибуте sizes

Атрибут sizes — это замена атрибутам width и height. Он устанавливает ширину картинки и условие при котором должна быть выставлена эта ширина. Например:

<img
	srcset="image_1400.jpg 1400w, image_700.jpg 700w, image_400.jpg 400w"
	sizes="(min-width: 700px) 600px, (min-width: 1200px) 80vw, 100vw"
>

Означает:

  • при ширине экрана больше 700px - ширина картинки будет 600px;
  • при ширине экрана больше 1200px - ширина картинки будет 80vw (80% от ширины экрана);
  • В остальных случаях (ширине экрана меньше 700px) - ширина картинки 100vw (100% от ширины экрана);

Заметка: если для картинки указать css свойство: max-width:100%, то это свойство перебивает атрибут sizes: т.е. если ширина картинки по sizes больше ширины элемента в котором она расположена - её ширина будет равна ширине элемента (max-width:100%).

Единицы измерения которые можно использовать в атрибутах sizes и srcset.

ед.измерения значение
em размер шрифта элемента
ex высота строчных букв шрифта элемента (высота буквы «x»)
ch ширина "0" (ZERO, U+0030) для шрифта элемента
rem размер шрифта корневого элемента (html)
vw 1% от ширины viewport (viewport width)
vh 1% от высоты viewport (viewport height)
vmin 1% от меньшего размера viewport (меньший из vw или vh)
vmax 1% от большего размера viewport (больший из vw или vh)
Работает на основе: wp_get_attachment_image_src(), wp_calculate_image_sizes()
✈ 1 раз = 0.000911с = медленно | 50000 раз = 30с = медленно

Хуков нет.

Возвращает

Строку/true/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

Примеры

#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

#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://wptest.ru/wp-content/uploads/2015/12/image.png"
	srcset="http://wptest.ru/wp-content/uploads/2015/12/image-240x300.png 240w, http://wptest.ru/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"
>

Код wp get attachment image sizes: wp-includes/media.php WP 4.8.1

<?php
function wp_get_attachment_image_sizes( $attachment_id, $size = 'medium', $image_meta = null ) {
	if ( ! $image = wp_get_attachment_image_src( $attachment_id, $size ) ) {
		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 );
}

Cвязанные функции

Из метки: image (не функции миниатюр)

Еще из раздела: Картинки

wp_get_attachment_image_sizes Комментариев нет

Здравствуйте, !

Ваш комментарий