flexbe banner 468x60flexbe banner 728x90flexbe banner 930x180skillbox banner 468x60skillbox banner 728x90skillbox banner 930x180kwork banner 468x60kwork banner 728x90kwork banner 930x180

Как из srcset достать ссылку на самое большое изображение на php, WordPress?

В 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 самого большого изображения

Пояснения:

  1. explode(',', $srcset); – разбивает строку srcset на массив изображений по запятой.
  2. list($url, $width) = array_map('trim', explode(' ', trim($image))); – разделяет каждое изображение на URL и ширину.
  3. intval($width); – преобразует ширину в целое число, чтобы можно было сравнивать размеры.
  4. Проверка и обновление максимальной ширины – если текущее изображение больше по ширине, чем предыдущее, обновляем значение.

Этот код проверяет srcset и возвращает URL самого большого изображения.

beget banner 480x320beget banner 728x90beget banner 120x600jivo banner 480x320jivo banner 728x90jivo banner 120x600flexbe banner 480x320flexbe banner 728x90flexbe banner 120x600

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Похожие посты

Как из стандартного типа записи post удалить «uncategorized» из ссылки в WordPress?

При создании записей в WordPress без указания категории по умолчанию им присваивается категория «Без рубрики» («Uncategorized»). Это приводит к появлению лишней части ссылки, например: https://example.com/bez-rubriki/nazvanie-zapisi. Если вы хотите убрать «bez-rubriki» из URL, то вам потребуется немного модифицировать настройки и добавить пользовательский код. В этой статье я покажу, как это сделать и избежать ошибок 404. Шаг…
Подробнее

Как на WordPress сделать архивную страницу со всеми авторами и структуру ссылок домен/authors/author

Чтобы сделать архивную страницу в WordPress, которая перечисляет всех авторов и предоставляет доступ к их страницам профилей через структуру ссылок вида домен/authors/author, нужно выполнить следующие шаги: 1. Создание пользовательской страницы для архива авторов Создайте файл шаблона: В вашей активной теме создайте файл page-authors.php. Это будет специальная страница, отображающая список всех авторов. Добавьте код для вывода…
Подробнее

Как сделать функцию для редиректа со старых ссылок сайта на новые в WordPress?

Для создания функции редиректа в WordPress со старых ссылок на новые, можно использовать файл .htaccess или написать специальный код в functions.php темы. Рассмотрим оба варианта: 1. Редирект через .htaccess Если вам нужно выполнить редиректы для множества старых URL, проще всего это сделать через файл .htaccess в корне вашего сайта. Для этого откройте или создайте файл…
Подробнее