wp_get_attachment_image_srcset

Получает значение для атрибута srcset html тега <img>. Значение будет содержать имена всех имеющихся размеров указанной картинки (вложения) в таком виде: URL_КАРТИНКИ-ШИРИНАxВЫСОТА.jpg ШИРИНАw.

Функция получает по ID картинки-вложения все имеющиеся размеры этой картинки и создает из полученных данных строку вида: URL_КАРТИНКИ-ШИРИНАxВЫСОТА.jpg ШИРИНАw URL_КАРТИНКИ-ШИРИНА2xВЫСОТА2.jpg ШИРИНА2w

Функция ничего не вернет если:

  • указанная картинка это анимированная GIF картинка. В этом случае промежуточные размеры получить невозможно.

  • удалось получить только данные одного промежуточного размера. Для srcset нужно как минимум два.

При поиске промежуточных размеров функция пропускает картинки если:

  • если ширина промежуточной картинки больше 1600px. Это значение можно изменить через фильтр max_srcset_image_width

  • Пропускает картинки которые были отредактированы (оригиналы).

  • Пропускает картинки пропорции которых отличаются от основной. Т.е. height/width не равно height/width промежуточной картинки. При сравнении допускается погрешность в 0.002.
Эта функция используется в связке с wp_get_attachment_image_sizes()

Об атрибуте scrset

Атрибут scrset — это замена атрибута src. В scrset указываются несколько URL картинки и условие для каждого URL при котором он должен использоваться. Этот атрибут важнее чем src и src будет использован только если браузер не поддерживает scrset.

Например такая строка:

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

Размер картинки для которой будет построено значение атрибута srcset.

Может принимать любой зарегистрированный размер или массив: 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 Получим значения srcset для полного размера картинки

echo wp_get_attachment_image_srcset( 6587, 'full' );
// выведет: 
// http://wp-kama.ru/wp-content/uploads/2015/12/WP-Recall-0-120x69.jpg 120w, http://wp-kama.ru/wp-content/uploads/2015/12/WP-Recall-0.jpg 975w

#2 Добавим атрибут srcset для картинки

$attachment_id = 6587;

printf( '<img src="%s" srcset="%s">',
	wp_get_attachment_image_url( $attachment_id ),
	wp_get_attachment_image_srcset( $attachment_id, 'full' )
);

/* выведет:
<img
	src="/wp-content/uploads/2015/12/WP-Recall-0-80x80.jpg"
	srcset="http://wp-kama.ru/wp-content/uploads/2015/12/WP-Recall-0-120x69.jpg 120w, http://wp-kama.ru/wp-content/uploads/2015/12/WP-Recall-0.jpg 975w">
*/

#3 Добавление необходимых атрибутов в IMG

<?php
function wp_get_attachment_image_srcset( $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_srcset( $size_array, $image_src, $image_meta, $attachment_id );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *