wpupdate.ru wordpress WP Update

Как отключить отложенную загрузку для встроенных видео в WordPress

Если на странице есть встроенное видео на первом экране, стандартная отложенная загрузка часто работает против вас: вместо нормального превью браузер сначала тянет лишнюю обвязку, а пользователь видит пустой блок или поздний старт плеера. Это особенно заметно на лендингах, в статьях с обзором и на главной, где видео должно быть доступно сразу.

Проблема обычно не в самом 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 сразу, а не после скролла.

  1. Откройте страницу в режиме инкогнито.
  2. Посмотрите исходный HTML и убедитесь, что у нужного iframe больше нет loading="lazy".
  3. В DevTools на вкладке Network обновите страницу и проверьте, что запрос к видео-iframe уходит сразу.
  4. Прогоните страницу через 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, проверить мобильную версию, убедиться, что кэш обновлен. Это быстрее, чем потом искать, почему видео снова стало грузиться с задержкой после очередного апдейта темы или плагина.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее