wp_get_attachment_image_srcset()
Получает значение для атрибута srcset html тега <img>. Значение будет содержать имена всех имеющихся размеров указанной картинки (вложения) в таком виде: image.jpg 1x, image-sm.jpg 640w"
.
Функция получает по ID картинки-вложения все имеющиеся размеры этой картинки и создает из полученных данных строку для атрибута srcset.
Функция ничего не вернет если:
-
указанная картинка это анимированная GIF картинка. В этом случае промежуточные размеры получить невозможно.
- удалось получить только данные одного промежуточного размера. Для srcset нужно как минимум два.
При поиске промежуточных размеров функция пропускает картинки:
-
если ширина промежуточной картинки больше 1600px. Это значение можно изменить через фильтр
max_srcset_image_width
-
которые были отредактированы (оригиналы).
- пропорции которых отличаются от основной. Т.е. height/width не равно height/width промежуточной картинки. При сравнении допускается погрешность в 0.002.
Эта функция используется в связке с wp_get_attachment_image_sizes()
Об атрибуте scrset
srcset — содержит сет УРЛов на картинки (через запятую), чтобы браузер мог выбрать наиболее подходящий вариант в зависимости от параметров экрана устройства, с которого просматривается страница.
В srcset
можно указать один или несколько URL.
В srcset
подразумевается указывать разные размеры одной и той же картинки. Можно указать и разные, но логика его работы подразумевает одну и ту же картинку.
Каждая строка в списке должна содержать УРЛ и дескриптор. Если никакой дескриптор не указан, то берется по умолчанию - 1x
.
Дескриптор может быть двух типов:
Физическая ширина картинки
в пикселях (actual width). Например600w
,1000w
.Плотность пикселей устройства
(display density) - DPR (device pixel ratio), например2x
,3x
.
Хуков нет.
Возвращает
Строку|false
. Значение атрибута 'srcset' или false.
Использование
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
<img src="<?php echo wp_get_attachment_image_url( $attachment_id, 'large' ) ?>" srcset="<?php echo wp_get_attachment_image_srcset( $attachment_id, 'large' ) ?>" sizes="<?php echo wp_get_attachment_image_sizes( $attachment_id, 'large' ) ?>" >
Заметки
- Смотрите: wp_calculate_image_srcset()
Список изменений
С версии 4.4.0 | Введена. |
Код wp_get_attachment_image_srcset() wp get attachment image srcset WP 6.7.2
function wp_get_attachment_image_srcset( $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_srcset( $size_array, $image_src, $image_meta, $attachment_id ); }