В WordPress, тег <img>
с атрибутом srcset
может содержать несколько URL изображений с разными размерами. Чтобы на PHP достать URL самого большого изображения из srcset
, нужно распарсить этот атрибут и выбрать изображение с наибольшей шириной.
Пример кода для WordPress:
function get_largest_image_from_srcset($srcset) {
// Разбиваем строку srcset на отдельные элементы
$images = explode(',', $srcset);
// Инициализация переменных для хранения самого большого изображения
$largest_image = '';
$max_width = 0;
foreach ($images as $image) {
// Очищаем пробелы и разбиваем на части: URL и ширину
list($url, $width) = array_map('trim', explode(' ', trim($image)));
// Убираем "w" из ширины и приводим к целому числу
$width = intval($width);
// Проверяем, если ширина больше текущей максимальной, обновляем данные
if ($width > $max_width) {
$max_width = $width;
$largest_image = $url;
}
}
// Возвращаем URL самого большого изображения
return $largest_image;
}
// Пример использования в WordPress
$post_thumbnail_id = get_post_thumbnail_id();
$srcset = wp_get_attachment_image_srcset($post_thumbnail_id);
$largest_image = get_largest_image_from_srcset($srcset);
echo $largest_image; // Вывод URL самого большого изображения
Пояснения:
explode(',', $srcset);
– разбивает строкуsrcset
на массив изображений по запятой.list($url, $width) = array_map('trim', explode(' ', trim($image)));
– разделяет каждое изображение на URL и ширину.intval($width);
– преобразует ширину в целое число, чтобы можно было сравнивать размеры.- Проверка и обновление максимальной ширины – если текущее изображение больше по ширине, чем предыдущее, обновляем значение.
Этот код проверяет srcset
и возвращает URL самого большого изображения.