Отложенная загрузка изображений и видео полезна почти всегда, но есть сценарии, где она мешает: первый экран «прыгает», слайдеры и галереи инициализируются с пустыми плейсхолдерами, а превью видео грузится слишком поздно. В WordPress это чаще всего связано не с ядром, а с темой, плагином оптимизации или CDN-скриптом, который добавляет loading="lazy" и свои атрибуты поверх разметки.
Если задача не в том, чтобы полностью убрать lazy load на всём сайте, а только исключить конкретные элементы — это правильный подход. Полное отключение обычно ухудшает производительность, особенно на длинных страницах и в архивных списках.
Когда lazy load действительно мешает
Проблема обычно заметна в одном из трёх случаев: изображение в первом экране появляется с задержкой, видео-превью не видно до прокрутки, либо JS-компонент ожидает реальный src, а получает отложенную подмену через data-src. На практике это часто ломает:
- hero-блоки с фоновыми картинками;
- слайдеры на главной странице;
- галереи в шапке записи;
- встроенные видео с превью и кнопкой play;
- логотипы и критичные иконки, если тема ошибочно помечает их как ленивые.
Быстрая диагностика проблемы
Сначала проверьте, кто именно добавляет отложенную загрузку. В исходном коде страницы ищите loading="lazy", data-src, data-lazy-src и похожие атрибуты. Если атрибуты есть уже в HTML, их добавляет тема, фильтр WordPress или плагин оптимизации. Если HTML чистый, а lazy load появляется только в браузере, значит скрипт меняет DOM после загрузки.
Полезно сравнить результат в DevTools и в исходнике страницы. Если в исходнике у первого изображения стоит loading="lazy", а оно находится в первом экране, это почти наверняка лишнее. Для видео проверьте, не подменяется ли iframe на превью-картинку до клика.
Как отключить lazy load точечно, а не на всём сайте
В WordPress есть встроенная ленивaя загрузка для изображений. Её можно отключить через фильтр wp_lazy_loading_enabled, но лучше делать это выборочно: для конкретных тегов, размеров или областей шаблона. Ниже — рабочий вариант, который отключает lazy load для изображений в первом экране, если вы можете пометить их классом no-lazy.
<?php
add_filter( 'wp_lazy_loading_enabled', function( $default, $tag_name, $context ) {
if ( 'img' !== $tag_name ) {
return $default;
}
// Отключаем lazy load только в нужном контексте шаблона.
if ( is_front_page() || is_home() ) {
return false;
}
return $default;
}, 10, 3 );Этот вариант грубый и подходит только если вы точно понимаете, что на главной lazy load не нужен. Чаще лучше отключать его не по странице, а по конкретной картинке в шаблоне. Для этого можно убрать атрибут loading у нужного изображения через фильтр разметки.
<?php
add_filter( 'wp_get_attachment_image_attributes', function( $attr, $attachment, $size ) {
if ( empty( $attr['class'] ) ) {
return $attr;
}
if ( false !== strpos( $attr['class'], 'no-lazy' ) ) {
unset( $attr['loading'] );
unset( $attr['decoding'] );
}
return $attr;
}, 10, 3 );В шаблоне тогда достаточно добавить класс к нужному изображению через стандартный вывод WordPress или через редактирование блока в теме. Такой подход безопаснее, чем отключать оптимизацию глобально.
Если lazy load добавляет плагин оптимизации
У плагинов кеша и оптимизации логика часто своя: они могут отключать lazy load в настройках, но при этом оставлять исключения для первого изображения, логотипа или iframe. Если в админке есть список исключений, сначала используйте его. Это лучше, чем править код, потому что после обновления плагина ручные изменения в шаблонах обычно не ломаются, а вот хаки в ядро плагина — ломаются.
Если плагин не даёт точечного исключения, проверьте, можно ли отключить только lazy load для iframe и video, оставив изображения. Для встроенных видео это часто решает проблему с «пустым» первым экраном без заметной потери производительности.
Что делать с видео и iframe
Для видео важен не только loading, но и сама схема вставки. Если вы используете стандартный iframe YouTube или VK, браузер может не показывать его сразу из-за отложенного рендера. В этом случае лучше отключать lazy load именно для iframe в зоне первого экрана, а не для всех видео на сайте.
Если видео вставлено через блок или плагин, проверьте, есть ли у него настройка «ленивая загрузка превью» или «загружать iframe по клику». Для главной страницы и посадочных это часто критично: лучше загрузить один iframe сразу, чем ломать визуальную композицию.
Сравнение подходов
| Подход | Когда подходит | Минус |
|---|---|---|
| Настройка в плагине | Если lazy load добавляет кеш/оптимизатор | Зависит от интерфейса плагина и его обновлений |
| Фильтр в functions.php | Если нужно точечно исключить изображения или iframe | Нужно аккуратно тестировать на теме и дочерней теме |
| Полное отключение | Только если сайт маленький и первый экран критичен | Ухудшает загрузку длинных страниц и архивов |
Пошаговое решение без лишнего риска
- Определите, кто добавляет lazy load: ядро WordPress, тема или плагин.
- Проверьте, какие элементы реально страдают: первый экран, слайдер, видео, логотип.
- Сначала исключите только критичные изображения и iframe.
- Если используете плагин оптимизации, настройте исключения там, а не в ядре темы.
- После правок очистите кеш страницы, объектный кеш и CDN, если он есть.
- Сравните исходный HTML до и после изменений.
Как проверить, что решение сработало
Проверка должна быть не визуальной «на глаз», а технической. Откройте страницу в режиме просмотра исходника и убедитесь, что у критичных изображений больше нет loading="lazy". Если вы убирали lazy load для iframe, проверьте, что iframe присутствует в HTML сразу, а не подставляется только после скрипта.
Дальше откройте DevTools → Network и перезагрузите страницу с отключённым кешем браузера. Критичные изображения должны стартовать без задержки, а первый экран — отрисовываться без заметного сдвига. Если используете Lighthouse или PageSpeed, смотрите не только оценку, а конкретно на элементы, которые попали в LCP: иногда именно ленивое изображение становится самым крупным элементом страницы.
Частые ошибки и как их исправить
- Отключили lazy load глобально. В результате длинные страницы стали тяжелее. Исправление: верните lazy load и исключите только первый экран.
- Правили файл плагина напрямую. После обновления изменения исчезнут. Исправление: используйте фильтры, дочернюю тему или mu-plugin.
- Проверили только в админке. Визуально всё может выглядеть нормально, но HTML остаётся с lazy load. Исправление: смотрите исходник и Network.
- Не очистили кеш. Старые версии HTML продолжают отдаваться пользователям. Исправление: сбросьте кеш плагина, сервера и CDN.
- Отключили lazy load для всех iframe. Видео стало грузиться раньше, но страница потяжелела. Исправление: исключайте только критичные блоки.
Практика безопасности и производительности
Если вы вносите код в functions.php, делайте это в дочерней теме или через небольшой mu-plugin. Так вы не потеряете изменения при обновлении темы. Для сайтов с активной оптимизацией лучше сначала проверить, не дублирует ли ваш код уже существующий фильтр плагина: двойное вмешательство часто даёт обратный эффект, когда один слой отключает lazy load, а другой снова его включает.
Если сайт большой, не отключайте отложенную загрузку ради одного проблемного блока. Точечное исключение почти всегда лучше: оно сохраняет выигрыш по производительности и убирает визуальный баг. На практике это самый надёжный вариант для главной, лендингов и страниц с видео в первом экране.
Если вам нужно массово почистить сайт от дублей, лишних скриптов и технических хвостов, имеет смысл смотреть в сторону инструментов, которые умеют работать с SEO и оптимизацией на уровне настроек, а не только через ручные правки. Например, у Clearfy Pro есть набор функций для технической чистки WordPress: https://wpshop.ru/plugins/clearfy?utm_source=wpdemo.ru&utm_medium=article&utm_campaign=kak-otklyuchit-otlozhennuyu-zagruzku-lenivuyu-zagruzku-v-wordpress-dlya-kartinok-i-video