WooCommerce: как реализовать отложенную (ленивую) загрузку изображений товаров для ускорения сайта

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

В интернет-магазинах на WooCommerce часто используется много изображений товаров, что существенно увеличивает время загрузки страниц и влияет на производительность сайта. Отложенная загрузка (lazy loading) позволяет загружать изображения только тогда, когда пользователь прокручивает страницу до них, что снижает нагрузку на сервер и ускоряет отображение контента.

Диагностика проблемы с загрузкой изображений

Чтобы понять, что на вашем WooCommerce сайте есть проблемы с загрузкой изображений, проверьте:

  • Время загрузки страницы с большим количеством товаров (через инструменты типа Google PageSpeed Insights, GTmetrix, или Lighthouse).
  • Использование стандартного атрибута loading="lazy" в тегах <img> товаров.
  • Наличие дополнительных JavaScript для lazy loading и их совместимость с вашей темой и плагинами.

Если изображения загружаются все сразу, даже вне зоны видимости, это увеличивает время загрузки и расход трафика.

Пошаговое решение: как внедрить отложенную загрузку изображений товаров WooCommerce

1. Проверка поддержки нативного lazy loading

Современные браузеры поддерживают атрибут loading="lazy". WooCommerce с WordPress 5.5+ автоматически добавляет этот атрибут к изображениям, если тема не блокирует. Проверьте исходный код страницы:

<img src="https://example.com/wp-content/uploads/product.jpg" loading="lazy" alt="Товар" />

Если атрибут отсутствует, можно добавить фильтр.

2. Добавляем lazy loading через фильтр для изображений товаров

Добавьте следующий код в functions.php вашей темы или в плагин-сниппет:

add_filter('wp_get_attachment_image_attributes', function($attr, $attachment, $size) {
    if (!isset($attr['loading'])) {
        $attr['loading'] = 'lazy';
    }
    return $attr;
}, 10, 3);

Этот код добавит атрибут loading="lazy" ко всем изображениям, если его нет.

3. Использование JavaScript-библиотеки для поддержки старых браузеров

Если вам нужна поддержка lazy loading в браузерах без нативной поддержки (например, IE11), добавьте библиотеку vanilla-lazyload. Например:

<script src="https://cdn.jsdelivr.net/npm/vanilla-lazyload@17.3.1/dist/lazyload.min.js"></script>
<script>
    var lazyLoadInstance = new LazyLoad({
        elements_selector: ".lazy"
    });
</script>

Затем измените вывод изображений товаров, чтобы вместо src использовать data-src и добавьте класс lazy. Например, через фильтр:

add_filter('woocommerce_single_product_image_thumbnail_html', function($html) {
    $html = str_replace('src="', 'data-src="', $html);
    $html = str_replace('<img', '<img class="lazy"', $html);
    return $html;
});

4. Оптимизация изображений и CDN

Отложенная загрузка лучше работает вместе с оптимизированными изображениями и CDN. Используйте плагины типа Clearfy для очистки сайта и оптимизации, а также подключите CDN с поддержкой автоматической компрессии.

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

Чтобы убедиться, что lazy loading работает:

  • Откройте страницу товара с большим количеством изображений.
  • В инструменте разработчика браузера (Chrome DevTools) на вкладке Network проверьте, что изображения загружаются по мере прокрутки страницы, а не сразу.
  • Проверьте наличие атрибута loading="lazy" в тегах <img>.
  • Запустите тест в Google PageSpeed Insights — должно быть улучшение в разделе "Эффективность загрузки изображений".

Частые ошибки при реализации ленивой загрузки в WooCommerce

  • Отсутствие атрибута loading="lazy" из-за конфликта темы или плагина. Решение: используйте фильтр wp_get_attachment_image_attributes для принудительного добавления.
  • Повреждение верстки при использовании JavaScript lazy load. Проверьте, чтобы библиотека lazyload правильно инициализировалась после загрузки DOM.
  • Изображения не загружаются в IE11 и старых браузерах. Используйте polyfill или библиотеку vanilla-lazyload.
  • SEO-проблемы из-за неправильного использования data-src без резервного src. Всегда оставляйте в <img> реальный src или используйте noscript блоки для поисковиков.

Практические советы по безопасности и производительности

  • Не загружайте ненужные скрипты lazy loading на страницы без изображений товаров.
  • Оптимизируйте изображения заранее (сжатие, ресайз) — lazy loading ускоряет, но не решает проблему больших файлов.
  • Используйте интеграцию с CDN для быстрой доставки изображений.
  • Регулярно обновляйте тему, WooCommerce и плагины, чтобы избежать конфликтов с lazy loading.

Сравнение способов реализации ленивой загрузки в WooCommerce

МетодПреимуществаНедостатки
Нативный атрибут loading="lazy"Простота, поддержка браузерами, минимальный кодНе поддерживается старыми браузерами
JavaScript библиотека (vanilla-lazyload)Поддержка всех браузеров, расширенные настройкиДополнительные скрипты, потенциальное влияние на производительность
Плагины ленивой загрузкиГотовое решение с настройками, поддержка изображений и видеоМожет конфликтовать с темой, нагрузка на сайт
Как создать автоматический импорт пользовательского контента в WordPress
05.04.2026
Как создать динамические поля в WordPress с помощью PremiumWP
28.02.2026
Как создать автоматическую оптимизацию базы данных WordPress
23.03.2026
Как сделать автоматический редирект при изменении ссылки в WordPress
30.01.2026
Как создать настройки темы в WordPress с примерами кода
02.12.2025