Когда 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 может вызвать ошибку темы и сделать сайт временно недоступным.