beget banner 468x60beget banner 728x90beget banner 930x180etxt banner 468x60etxt banner 728x90etxt banner 930x180smsc banner 468x60smsc banner 728x90smsc 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 самого большого изображения.

etxt banner 480x320etxt banner 728x90etxt banner 120x600jivo banner 480x320jivo banner 728x90jivo banner 120x600skillbox banner 480x320skillbox banner 728x90skillbox banner 120x600

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

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

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

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

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

Как на pre_get_posts сделать сортировку по мета полю, значение которого является числом от большего к меньшему

Чтобы сделать сортировку по мета-полю (мета-записи) в WordPress с использованием хука pre_get_posts, можно добавить кастомный код в файл функций темы (например, functions.php). При этом нужно указать, что сортировка должна быть по значению мета-поля, которое является числом (например, от большего к меньшему). Пример кода: Объяснение: Если вы используете какой-то другой тип постов или условия для запроса…
Подробнее

Как на хуке pre_get_posts проверить post_type текущего запроса

Чтобы проверить тип записи (post_type) в запросе на хуке pre_get_posts, вы можете использовать объект запроса $query. Вот пример кода, который показывает, как это сделать: Пояснение: Таким образом, вы сможете проверить и управлять параметрами запроса в зависимости от типа записи.
Подробнее

Как в запросе wp_query исключить посты имеющие родительский пост, WordPress

Чтобы исключить посты, у которых есть родительский пост (т.е. дочерние посты), в запросе WP_Query, нужно использовать аргумент post_parent. Этот аргумент контролирует, есть ли у поста родитель или нет. Для исключения дочерних постов нужно указать условие post_parent => 0, что означает, что только посты без родителя (т.е. верхнего уровня) будут включены в выборку. Вот пример запроса:…
Подробнее