wptricks.ru wordpress WPTricks

Как отключить эмбеддинг YouTube и других внешних сервисов в WordPress

Когда WordPress автоматически превращает ссылку на YouTube в плеер, браузер загружает iframe и может обращаться к серверам видеосервиса ещё до того, как посетитель нажмёт «Воспроизвести». Если на странице несколько таких встраиваний, сторонние запросы и скрипты добавляются при её открытии. Чтобы этого избежать, отключите автоматические oEmbed-вставки и замените плееры ссылками или блоками-заглушками.

Отключение встроенной функции WordPress не удалит iframe, если он уже записан в содержимое страницы вручную, добавлен плагином или вставлен как HTML. Такие элементы нужно убрать отдельно.

Что именно отключает WordPress

В редакторе достаточно вставить отдельной строкой ссылку на YouTube или другой поддерживаемый сервис: WordPress обычно преобразует её в видео или другой встроенный блок. Для этого используются механизмы oEmbed. Кроме них, в контенте может встречаться шорткод [embed], а на страницах с встраиваниями — скрипт wp-embed.

Скрипт wp-embed относится к WordPress и сам по себе не загружает YouTube-плеер. Основные внешние запросы создаёт iframe сервиса. Поэтому простое удаление скрипта не заменяет отключение oEmbed: оно может убрать часть поведения встроенных блоков, но не гарантирует, что внешний плеер исчезнет.

Отключите автоматические встраивания WordPress

Если нужно перестать превращать URL и шорткод [embed] в плееры во всём основном содержимом сайта, добавьте код в отдельный небольшой плагин или в файл functions.php дочерней темы. Не редактируйте файлы ядра: обновление WordPress перезапишет изменения. Если редактируете тему, сначала проверьте, что у вас дочерняя тема, иначе правка может пропасть при её обновлении.

Код ниже удаляет стандартные фильтры WordPress, отвечающие за шорткод и автоматическое преобразование ссылок в контенте, и отключает список oEmbed-провайдеров. Он также не позволяет выводить стандартный скрипт WordPress для встраиваний на фронтенде.

add_action( 'init', function () {
    global $wp_embed;

    if ( $wp_embed instanceof WP_Embed ) {
        remove_filter( 'the_content', array( $wp_embed, 'run_shortcode' ), 8 );
        remove_filter( 'the_content', array( $wp_embed, 'autoembed' ), 8 );
    }

    add_filter( 'oembed_providers', '__return_empty_array' );
    remove_action( 'wp_head', 'wp_oembed_add_host_js' );
}, 20 );

add_action( 'wp_enqueue_scripts', function () {
    wp_dequeue_script( 'wp-embed' );
    wp_deregister_script( 'wp-embed' );
}, 100 );

В обычных записях и страницах вместо плеера должна остаться ссылка или текст URL. Отключение действует на стандартные oEmbed-вставки WordPress, а не на любой iframe на сайте. Оно может затронуть встраивания других поддерживаемых сервисов, а также контент, который полагается на шорткод [embed]. Если нужно оставить конкретный сервис, придётся настраивать исключение вместо отключения всех провайдеров.

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

Чем заменить плеер

Самый лёгкий вариант — обычная ссылка с понятным текстом. Она не загружает YouTube-iframe при открытии страницы. Если посетителю важно сразу увидеть, о каком видео речь, добавьте к ссылке изображение-обложку, сохранённое на вашем сайте. Не вставляйте удалённую картинку с YouTube как источник: это всё равно создаст запрос к внешнему серверу при загрузке страницы.

Например, вместо автоматического плеера можно вручную добавить в редактор блок HTML с локальной картинкой-ссылкой:

<p>
  <a href='https://www.youtube.com/watch?v=VIDEO_ID'>
    <img src='/wp-content/uploads/video-cover.jpg'
         alt='Смотреть видео на YouTube'>
  </a>
</p>

Замените VIDEO_ID на идентификатор видео, а путь /wp-content/uploads/video-cover.jpg — на адрес загруженной в медиатеку обложки. Убедитесь, что у вас есть право использовать изображение. При нажатии посетитель перейдёт на YouTube, но сам плеер на вашей странице не появится.

Если нужно воспроизведение прямо на странице, используйте заглушку с загрузкой iframe только после нажатия. Это сложнее обычной ссылки: потребуется JavaScript, а также учёт согласия на сторонние сервисы, если он нужен по настройкам сайта. До клика заглушка должна содержать только локальные HTML и изображение; иначе часть нагрузки всё равно появится при первом просмотре страницы. Само нажатие на внешнее видео приведёт к обращению к сервису — полностью избежать этого и одновременно воспроизводить видео с его серверов нельзя.

Уберите уже добавленные iframe и проверьте результат

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

После изменений очистите кеш страницы и CDN, если они используются, затем откройте страницу в приватном окне браузера. В инструментах разработчика откройте вкладку Network и перезагрузите страницу. До взаимодействия с ней не должно быть запросов к доменам видеосервиса, например youtube.com, youtube-nocookie.com или googlevideo.com, вызванных прежним плеером. Проверьте также, что в исходном HTML не осталось iframe и что локальная обложка отображается.

Обычная ссылка на YouTube и iframe с доменом youtube-nocookie.com — не одно и то же: второй вариант всё равно является внешним плеером и может обращаться к серверам Google. Если задача — не загружать сервис до действия посетителя, одного перехода на «расширенный режим конфиденциальности» недостаточно. Ориентируйтесь на реальные запросы в браузере, а не только на отсутствие скрипта wp-embed.

Если нужно отключить встраивания только в части сайта

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше