не выводит URL изображения среднего размера

Вопрос или проблема

В настоящее время я пытаюсь вывести URL миниатюры поста с его различными размерами изображений для использования в srcset.

Мой текущий код:

<img class="productimage lazyload" data-src="<?php the_post_thumbnail_url('medium'); ?>" />

Но это всегда выводит изображение полного размера вместо ‘medium’. Я также пытался использовать первую строку ‘null’ или ID поста; но это по-прежнему не работает.

Есть ли способ вывести URL миниатюры поста с конкретными размерами изображений, которые мне нужны, для srcset?

Что ж, это настраиваемая тема, поэтому я не знаю, пропустил ли я что-то. Пожалуйста, дайте мне знать, если есть способ сделать это.

Просто используйте функцию the_post_thumbnail(). Она создает тег изображения, добавляет srcset для вас и поддерживает родное ленивое загрузку:

the_post_thumbnail( 'medium', [ 'class' => 'productimage' ] );

Ответ или решение

Проблема, с которой вы столкнулись, связана с использованием функции the_post_thumbnail_url('medium'), которая должным образом не возвращает URL-адрес изображения в размере «medium». Вместо этого она может возвращать URL изображения большого размера или полного размера по умолчанию, если не настроено изображение в заданном размере.

Для начала, следует удостовериться, что в вашей теме WordPress действительно зарегистрированы и существуют различные размеры изображений, включая размер «medium». Это можно сделать, добавив следующий код в файл functions.php вашей темы:

add_theme_support('post-thumbnails');
set_post_thumbnail_size(150, 150, true); // Размер миниатюры по умолчанию
add_image_size('medium', 300, 300, true); // Размер для 'medium'

Теперь, когда размеры изображений зарегистрированы, вы можете использовать функцию the_post_thumbnail() для вывода изображения нужного размера. Эта функция автоматически генерирует тег <img> с правильным URL изображения, а также добавляет атрибут srcset, что позволяет использовать адаптивные изображения. Пример кода будет выглядеть следующим образом:

<?php the_post_thumbnail('medium', ['class' => 'productimage lazyload']); ?>

Использование атрибута lazyload в классе изображения также поддерживается для нативной отложенной загрузки изображений, начиная с версии WordPress 5.5. Вам не нужно вручную добавлять атрибут src для заданного размера изображения, так как the_post_thumbnail() сделает это за вас.

Если вам необходимо использовать только URL изображения, вы можете использовать следующий код, но проверьте существование изображения в нужном размере:

$medium_image_url = get_the_post_thumbnail_url(get_the_ID(), 'medium');
if ($medium_image_url) {
    echo '<img class="productimage lazyload" data-src="' . esc_url($medium_image_url) . '" />';
} else {
    // Обработка случая, когда изображение в размере 'medium' отсутствует
    echo '<img class="productimage lazyload" data-src="' . esc_url(get_the_post_thumbnail_url(get_the_ID())) . '" />';
}

Важно помнить, что при работе с изображениями и использованием srcset вы должны убедиться, что размеры изображений правильно генерируются и загружаются, чтобы избежать проблем с производительностью и пользовательским опытом.

Подводя итог, рекомендуется использовать the_post_thumbnail() для наилучшего результата в контексте вашего запроса. Это обеспечит гибкость, лучшую производительность и правильный вывод изображения с поддержкой различных устройств и разрешений экранов.

Оцените материал
Добавить комментарий

Капча загружается...