В GeneratePress чаще всего не сам lazy load проблема, а его применение не там, где нужно. На обычных статьях отложенная загрузка помогает, но на главной, лендингах, страницах с первым крупным баннером или в шаблонах с важным изображением выше первого экрана она может давать заметную задержку визуального появления контента. В итоге картинка есть в HTML, но браузер откладывает её загрузку, и это уже мешает и пользователю, и метрикам.
Задача здесь не в том, чтобы отключить lazy load глобально. Гораздо практичнее убрать его точечно: только на нужных страницах и только для конкретных изображений. В GeneratePress это удобно делать через фильтры WordPress и через настройки самого шаблона, если lazy load добавляется темой или плагином оптимизации.
Когда lazy load действительно мешает
Проверять нужно не по ощущениям, а по факту. Если изображение находится в первом экране, но в DevTools видно, что у него стоит loading="lazy", браузер может отложить запрос. Это особенно заметно на:
- главной странице с большим hero-изображением;
- лендингах с баннером и CTA в верхней части;
- страницах услуг, где первый экран строится вокруг одной ключевой иллюстрации;
- шаблонах, где изображение участвует в LCP;
- страницах, где lazy load конфликтует с слайдером или анимацией появления блока.
Если проблема проявляется только на части шаблонов, отключать ленивую загрузку для всего сайта не нужно. Это лишит вас пользы на длинных статьях и галереях.
Диагностика: кто именно добавляет lazy load
В GeneratePress и в WordPress в целом lazy load может появляться из нескольких мест. Перед правкой надо понять источник, иначе вы отключите не то и получите эффект «ничего не изменилось».
Проверьте HTML страницы
Откройте страницу в браузере и посмотрите исходный код или элементы в DevTools. Ищите:
loading="lazy"у<img>;fetchpriority="high"у изображения первого экрана, если оно уже оптимизировано;- классы или атрибуты, которые добавляет плагин оптимизации;
- не только изображения, но и iframe, если на странице есть видео.
Если атрибут добавляет WordPress, его можно убрать фильтром. Если это делает плагин кеша или оптимизации, в настройках плагина может быть отдельное исключение по URL, классу или типу изображения.
Сравните поведение на разных шаблонах
Откройте проблемную страницу и обычную запись. Если на записи lazy load есть, а на лендинге его нужно убрать, значит решение должно быть условным. Это типичный случай для GeneratePress: тема сама по себе не мешает, но её гибкая структура часто используется вместе с плагинами, которые включают одинаковую оптимизацию для всех страниц.
Как отключить lazy load точечно через код
Если lazy load добавляет WordPress, самый прямой путь — фильтр wp_img_tag_add_loading_attr. Он позволяет вернуть false для конкретных страниц или конкретных изображений. Это безопаснее, чем править HTML вручную, потому что логика остаётся в коде темы или в мини-плагине.
<?php
add_filter( 'wp_img_tag_add_loading_attr', function( $value, $image, $context ) {
if ( is_page( array( 12, 34 ) ) ) {
return false;
}
return $value;
}, 10, 3 );
В этом примере lazy load отключается только на страницах с ID 12 и 34. Если у вас лендинг на отдельном шаблоне, можно заменить is_page() на проверку шаблона:
<?php
add_filter( 'wp_img_tag_add_loading_attr', function( $value, $image, $context ) {
if ( is_page_template( 'templates/landing.php' ) ) {
return false;
}
return $value;
}, 10, 3 );
Если нужно убрать lazy load только у первого изображения на странице, логика будет сложнее: придётся отслеживать контекст вывода. На практике проще отключать его для конкретного шаблона или для конкретного блока, который отвечает за первый экран.
Если lazy load добавляет не WordPress, а плагин
Тогда фильтр выше не поможет. У большинства плагинов оптимизации есть собственные исключения. Обычно это:
- исключение по URL страницы;
- исключение по CSS-классу изображения;
- исключение по имени файла;
- отключение lazy load для первых N изображений.
Здесь важно не смешивать два механизма сразу. Если WordPress уже добавляет loading="lazy", а плагин ещё и переписывает изображения, вы можете получить дублирующую логику. Сначала отключите один источник, потом проверьте второй.
Сравнение подходов: плагин, код, компромисс
| Подход | Когда подходит | Минус |
|---|---|---|
| Настройка в плагине оптимизации | Если lazy load добавляет кеш-плагин и у него есть исключения | Зависит от конкретного плагина и его интерфейса |
| Фильтр в коде | Если нужно отключить lazy load на шаблоне, странице или по условию | Нужен доступ к functions.php или мини-плагину |
| Полное отключение | Если lazy load ломает критичный шаблон и нет времени на точечную настройку | Теряется польза на длинных страницах |
Пошаговое решение для GeneratePress
Если у вас тема GeneratePress и проблема проявляется только на части страниц, действуйте так:
- Определите, кто добавляет
loading="lazy": WordPress, плагин кеша или сторонний оптимизатор. - Проверьте, на каких шаблонах lazy load мешает: главная, лендинг, страница услуги, статья.
- Если источник — WordPress, добавьте фильтр
wp_img_tag_add_loading_attrи ограничьте его условиемis_page()илиis_page_template(). - Если источник — плагин, добавьте исключение в его настройках.
- После правки очистите кеш страницы, кеш плагина и кеш CDN, если он есть.
Для удобства можно вынести условие в отдельную функцию, чтобы потом расширить список страниц без переписывания фильтра:
<?php
function gp_disable_lazyload_on_selected_pages( $value, $image, $context ) {
if ( is_page( array( 12, 34, 56 ) ) ) {
return false;
}
return $value;
}
add_filter( 'wp_img_tag_add_loading_attr', 'gp_disable_lazyload_on_selected_pages', 10, 3 );
Как проверить, что решение сработало
Проверка должна быть технической, а не визуальной «на глаз».
- Откройте страницу в режиме инкогнито, чтобы исключить влияние расширений браузера.
- Посмотрите HTML первого изображения: атрибут
loading="lazy"должен исчезнуть там, где вы его отключали. - Вкладка Network в DevTools должна показать ранний запрос к изображению первого экрана.
- Если вы используете Lighthouse или PageSpeed Insights, проверьте, не изменился ли LCP в нужную сторону именно на проблемной странице.
- Очистите весь кеш и проверьте страницу повторно после обновления.
Если атрибут исчез, но картинка всё равно подгружается поздно, значит задержку создаёт не lazy load, а другой фактор: тяжёлый файл, блокирующий CSS, JS-рендер или внешний CDN.
Частые ошибки и как их исправить
Отключили lazy load глобально вместо точечного исключения
Это частая реакция, когда первая проверка показывает задержку изображения. В результате вы убираете полезную оптимизацию со всего сайта. Исправление простое: верните lazy load и ограничьте отключение только нужными страницами или шаблонами.
Проверили не тот источник
WordPress может уже не добавлять loading="lazy", а его добавляет плагин оптимизации. Тогда фильтр в теме не даст результата. Смотрите исходный HTML и настройки активных плагинов, прежде чем править код.
Не очистили кеш
После изменения фильтра старый HTML может продолжать отдаваться из кеша. Это особенно заметно на сайтах с серверным кешем или CDN. Очистка нужна на всех уровнях, иначе вы будете проверять старую версию страницы.
Отключили lazy load у всех изображений на шаблоне
Если на странице много картинок ниже первого экрана, полное отключение может ухудшить загрузку. Лучше исключать только первый экран или конкретный блок, а не весь шаблон без разбора.
Что учесть в GeneratePress, чтобы не сломать производительность
GeneratePress обычно используют именно за аккуратную структуру и минимальный лишний код. Поэтому любые исключения по оптимизации должны быть узкими. Если вы уже чистите сайт от дублей и лишних мета-тегов, не добавляйте сюда ещё и широкое отключение всех механизмов загрузки изображений.
Практически это означает три вещи:
- не правьте шаблоны темы напрямую, если можно обойтись фильтром;
- не отключайте lazy load на всём сайте ради одной страницы;
- проверяйте результат после каждого изменения, а не пачкой.
Если вам нужен более широкий набор инструментов для чистки технических дублей и оптимизации WordPress, можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но и там логика та же: сначала понять источник проблемы, потом отключать только лишнее.
В итоге рабочая схема для GeneratePress выглядит просто: найти, кто добавляет lazy load, ограничить отключение нужными страницами, очистить кеш и проверить HTML первого экрана. Это быстрее и безопаснее, чем бороться с оптимизацией целиком.