WPExperts

Как создать адаптивный и ленивый загрузчик изображений в WordPress

В современном веб-разработке оптимизация загрузки изображений — важнейший аспект для повышения скорости работы сайта и улучшения пользовательского опыта. Особенно актуально это для WordPress-сайтов, где часто используется много медиа-контента. В этой статье мы рассмотрим, как реализовать адаптивную (responsive) и ленивую (lazy) загрузку изображений в WordPress с помощью собственных функций и популярных плагинов, а также покажем примеры кода.

Почему адаптивная и ленивя загрузка изображений важна для WordPress

Адаптивная загрузка изображений позволяет браузеру выбирать наиболее подходящий размер изображения в зависимости от размера экрана и устройства пользователя. Это снижает нагрузку на трафик и ускоряет загрузку страниц.

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

Вместе эти методы позволяют значительно улучшить производительность сайта и SEO-показатели.

Как реализовать адаптивную загрузку изображений в WordPress

WordPress из коробки поддерживает адаптивные изображения с помощью функции wp_get_attachment_image() и атрибута srcset. Тем не менее, можно создавать собственные функции для вставки изображений с нужными параметрами.

Пример функции wpexperts_get_responsive_image(), которая возвращает тег <img> с атрибутами srcset и sizes:

function wpexperts_get_responsive_image($attachment_id, $alt = '', $sizes = '(max-width: 600px) 100vw, 600px') {
    if (!$attachment_id) return '';
    $image_src = wp_get_attachment_image_url($attachment_id, 'medium');
    $srcset = wp_get_attachment_image_srcset($attachment_id, 'medium');
    if (!$image_src || !$srcset) return '';
    return '<img src="'.esc_url($image_src).'" alt="'.esc_attr($alt).'" srcset="'.esc_attr($srcset).'" sizes="'.esc_attr($sizes).'" loading="lazy" />';
}

В этом примере мы используем стандартные размеры WordPress и устанавливаем ленивую загрузку через атрибут loading="lazy". Можно использовать эту функцию в шаблонах темы для вывода изображений с адаптивной подгрузкой.

Пояснение параметров

  • $attachment_id — ID изображения из медиабиблиотеки WordPress.
  • $alt — альтернативный текст для изображения.
  • $sizes — атрибут sizes, указывающий браузеру, какой размер изображения выбрать в зависимости от ширины экрана.

Ленивая загрузка изображений с помощью JavaScript и Intersection Observer

Если требуется более гибкая ленивя загрузка, например, с эффектами или подгрузкой не только изображений, можно использовать JavaScript и API Intersection Observer.

Пример простого скрипта, который заменяет атрибут data-src на src, когда изображение появляется в зоне видимости:

document.addEventListener('DOMContentLoaded', function() {
    var lazyImages = [].slice.call(document.querySelectorAll('img.lazyload'));
    if ('IntersectionObserver' in window) {
        let lazyImageObserver = new IntersectionObserver(function(entries, observer) {
            entries.forEach(function(entry) {
                if (entry.isIntersecting) {
                    let lazyImage = entry.target;
                    lazyImage.src = lazyImage.dataset.src;
                    lazyImage.classList.remove('lazyload');
                    lazyImageObserver.unobserve(lazyImage);
                }
            });
        });
        lazyImages.forEach(function(lazyImage) {
            lazyImageObserver.observe(lazyImage);
        });
    } else {
        // Фолбек для старых браузеров
        lazyImages.forEach(function(lazyImage) {
            lazyImage.src = lazyImage.dataset.src;
            lazyImage.classList.remove('lazyload');
        });
    }
});

Для использования этого скрипта в WordPress нужно выводить изображения с классом lazyload и атрибутом data-src, а в атрибуте src ставить заглушку (например, прозрачный 1x1 пиксель).

Пример вывода изображения с ленивой загрузкой:

function wpexperts_lazy_image($attachment_id, $alt = '') {
    if (!$attachment_id) return '';
    $placeholder = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
    $image_src = wp_get_attachment_image_url($attachment_id, 'medium');
    return '<img class="lazyload" src="'.esc_url($placeholder).'" data-src="'.esc_url($image_src).'" alt="'.esc_attr($alt).'" />';
}

Использование плагинов для адаптивной и ленивой загрузки изображений

Если вы предпочитаете готовые решения, на рынке WordPress есть несколько мощных плагинов:

  • Smush — оптимизирует изображения и поддерживает ленивую загрузку, автоматическую генерацию WebP.
  • Lazy Load by WP Rocket — простой и легкий плагин для включения ленивой загрузки.
  • Adaptive Images for WordPress — автоматически генерирует адаптивные версии изображений и подставляет подходящий размер.

Например, плагин Smush позволяет не только включить ленивую загрузку, но и сжимать изображения без потери качества, что дополнительно ускоряет загрузку страниц.

Выводы и рекомендации по внедрению адаптивной и ленивой загрузки

Для эффективной оптимизации изображений в WordPress рекомендуем:

  • Использовать встроенную поддержку адаптивных изображений WordPress с функцией wp_get_attachment_image() или собственной функцией wpexperts_get_responsive_image().
  • Добавлять атрибут loading="lazy" для простейшей ленивой загрузки без дополнительного кода.
  • Если нужна продвинутая ленивя загрузка с эффектами или поддержкой старых браузеров, использовать JavaScript на базе Intersection Observer.
  • Использовать проверенные плагины, такие как Smush или Lazy Load by WP Rocket.
  • Всегда тестировать скорость загрузки сайта после внедрения, например, с помощью Google PageSpeed Insights или GTmetrix.

Таким образом, адаптивная и ленивя загрузка изображений — простой и эффективный способ улучшить производительность WordPress-сайта, повысить удобство для пользователей и улучшить SEO.

×
до 3225₽

Продавай темы и плагины WordPress!

Лови с каждой продажи

Начать ⋙