Если на странице есть встроенное видео на первом экране, стандартная отложенная загрузка часто работает против вас: вместо нормального превью браузер сначала тянет лишнюю обвязку, а пользователь видит пустой блок или поздний старт плеера. Это особенно заметно на лендингах, в статьях с обзором и на главной, где видео должно быть доступно сразу.
Проблема обычно не в самом YouTube, VK или RuTube, а в том, как тема, плагин или фильтры WordPress добавляют loading="lazy" к <iframe>. Ниже — рабочие способы убрать lazy load точечно, не ломая остальные изображения и не отключая оптимизацию целиком.
Как понять, что именно мешает загрузке видео
Сначала проверьте HTML на странице. Если у iframe есть loading="lazy", браузер отложит загрузку до момента, когда блок приблизится к области просмотра. Для видео выше первого экрана это почти всегда лишнее.
Откройте исходный код страницы или DevTools и посмотрите на iframe. Типичный проблемный фрагмент выглядит так:
<iframe width="560" height="315" src="https://www.youtube.com/embed/VIDEO_ID" loading="lazy" allowfullscreen></iframe>Если iframe вставляет плагин, он может добавлять не только loading, но и свой placeholder, скрипт подмены или обертку. В этом случае отключать lazy load нужно либо фильтром плагина, либо через правку вывода в теме.
Когда проблема точно есть
- видео на первом экране появляется с задержкой, хотя картинка страницы уже видна;
- в PageSpeed или Lighthouse видно, что iframe не загружается сразу;
- плеер подгружается только после скролла;
- на мобильных видео открывается слишком поздно и мешает первому взаимодействию.
Что лучше: правка кода, фильтр или плагин
Если задача точечная, лучше убрать lazy load только у нужных iframe. Полное отключение оптимизации для всех медиа обычно дает побочный эффект: тяжелее становятся страницы с галереями и длинными статьями.
| Подход | Когда подходит | Компромисс |
|---|---|---|
| Фильтр в теме или мини-плагине | Если нужно отключить lazy load у конкретных видео | Нужно немного кода и понимание, где формируется HTML |
| Настройка плагина вставки видео | Если видео вставляет отдельный плагин | Зависит от возможностей плагина |
| Глобальное отключение lazy load | Если проблема массовая и нет времени на точечную настройку | Ухудшает производительность для всех медиа |
Пошаговое решение через фильтр WordPress
Если iframe выводится через контент поста, можно убрать loading="lazy" из HTML на этапе фильтрации. Этот вариант удобен, когда видео вставлено вручную или через редактор, а не жестко зашито в шаблон.
<?php
add_filter('the_content', function ($content) {
if (is_admin() || !is_singular()) {
return $content;
}
// Убираем loading="lazy" только у iframe во фронтенде.
$content = preg_replace('/<iframe([^>]*?)\sloading=("|\')lazy\2([^>]*?)>/i', '<iframe$1$3>', $content);
return $content;
}, 20);Такой код лучше вынести в мини-плагин или в functions.php дочерней темы. Если тема обновляется часто, мини-плагин надежнее: правка не потеряется.
Но есть важная оговорка: регулярка выше удаляет атрибут loading у всех iframe в контенте. Если на странице есть сторонние виджеты, это может быть лишним. Для более аккуратного варианта можно ограничиться только видео-хостингами.
<?php
add_filter('the_content', function ($content) {
if (is_admin() || !is_singular()) {
return $content;
}
$content = preg_replace_callback('/<iframe([^>]*?)src=("|\')(.*?)\2([^>]*?)>/i', function ($matches) {
$src = $matches[3];
if (strpos($src, 'youtube.com/embed/') === false &&
strpos($src, 'youtu.be/') === false &&
strpos($src, 'vk.com/video_ext.php') === false &&
strpos($src, 'rutube.ru/play/embed/') === false) {
return $matches[0];
}
$iframe = $matches[0];
$iframe = preg_replace('/\sloading=("|\')lazy\1/i', '', $iframe);
return $iframe;
}, $content);
return $content;
}, 20);Если видео вставляет плагин
У некоторых плагинов есть собственные настройки для lazy load, превью и замены iframe на постер. В таком случае сначала ищите переключатель в настройках самого плагина. Это безопаснее, чем пытаться вырезать атрибуты по всему контенту.
Если плагин не дает нужной настройки, проверьте, есть ли у него фильтр на HTML-вывод. В документации это обычно описано как filter, render или output. Не стоит гадать по названию: лучше открыть исходники плагина и посмотреть, где формируется iframe.
Проверка результата после внедрения
После правки не ограничивайтесь визуальной проверкой. Нужно убедиться, что браузер действительно загружает iframe сразу, а не после скролла.
- Откройте страницу в режиме инкогнито.
- Посмотрите исходный HTML и убедитесь, что у нужного iframe больше нет
loading="lazy". - В DevTools на вкладке Network обновите страницу и проверьте, что запрос к видео-iframe уходит сразу.
- Прогоните страницу через Lighthouse или PageSpeed и сравните поведение до и после.
Если iframe все еще не грузится сразу, значит lazy load добавляет не WordPress, а тема, плагин оптимизации или скрипт, который подменяет видео на превью. Тогда ищите не атрибут loading, а код вроде data-src, data-lazy-src или кнопку-плейсхолдер.
Частые ошибки и как их исправить
Удалили lazy load глобально и получили просадку по скорости
Такое бывает, если отключают оптимизацию для всех iframe и изображений сразу. Для длинных материалов это лишняя нагрузка. Лучше оставить lazy load для нижней части страницы и убрать его только у первого видео.
Правка сломалась после обновления темы
Если код добавили прямо в functions.php родительской темы, обновление его перезапишет. Перенесите решение в дочернюю тему или отдельный мини-плагин.
Видео все равно открывается поздно
Значит, проблема не в loading="lazy". Часто iframe заменяется постером, а сам плеер подгружается по клику. Это уже не lazy load браузера, а отдельная оптимизация. В таком случае нужно отключать именно механизм подмены, а не атрибут iframe.
Сломали сторонний виджет
Если фильтр проходит по всем iframe, он может затронуть карты, формы или встраиваемые сервисы. Ограничивайте обработку только нужными доменами и проверяйте страницу с виджетами отдельно.
Практические советы по безопасности и производительности
- Не вставляйте правку в случайный плагин, который может быть удален при чистке сайта.
- Если используете кэш-плагин, очищайте кэш после изменения HTML-вывода.
- Проверяйте не только главную, но и шаблоны записей, где видео выводится через блоки или ACF-поля.
- Если видео стоит выше первого экрана, лучше использовать легкое превью и нормальный iframe без лишней обвязки.
Если на сайте уже накопились лишние скрипты, дубли и мусорные настройки, имеет смысл сначала навести порядок в технической части, а потом трогать медиа-оптимизацию. В таких задачах часто помогает аккуратная чистка фронтенда и SEO-обвязки, например через Clearfy Pro: https://wpshop.ru/plugins/clearfy.
После внедрения оставьте себе короткий чек-лист: проверить HTML, проверить Network, проверить мобильную версию, убедиться, что кэш обновлен. Это быстрее, чем потом искать, почему видео снова стало грузиться с задержкой после очередного апдейта темы или плагина.