WPTour

Как отключить отдельные виды embed в WordPress без поломки встраиваний

Если на сайте WordPress не нужны автоподхваты ссылок в embed, это можно отключить точечно: убрать лишний JavaScript, сократить запросы и не трогать сами встраивания там, где они реально используются. Типичный сценарий — редактор вставляет ссылки на YouTube, X, Instagram или другие сервисы, а на фронтенде остаются лишние скрипты и запросы, даже если embed-функциональность почти не нужна.

Важно сразу разделить две задачи. Одна — отключить глобальный скрипт wp-embed, который WordPress добавляет на фронтенде. Другая — не сломать oEmbed в редакторе и не убрать то, что используется в контенте. Ниже — рабочий способ для тех случаев, когда нужно именно уменьшить лишнюю нагрузку, а не «выключить всё подряд».

Когда это действительно проблема

Проверять стоит не по ощущениям, а по фактам. На части сайтов wp-embed вообще не нужен: ссылки на внешние сервисы вставляются вручную, а автоконвертация URL в embed не используется. Тогда скрипт просто висит в HTML без пользы. На других сайтах embed нужен только в админке или в редакторе, но не на публичных страницах.

Как понять, что скрипт лишний

  • в исходном коде страницы есть /wp-includes/js/wp-embed.min.js;
  • в DevTools на вкладке Network виден отдельный запрос к этому файлу;
  • на сайте нет контента, который зависит от автоподгрузки embed;
  • после отключения скрипта страницы визуально не меняются.

Если у вас есть записи с вставками через URL, сначала проверьте их на тестовой копии. Сам по себе wp-embed не отвечает за все возможные встраивания, но на некоторых темах и старых плагинах его отсутствие может повлиять на поведение контента.

Что именно отключать: сравнение вариантов

ВариантЧто делаетКогда подходитКомпромисс
Отключить только wp-embedУбирает фронтенд-скрипт embedЕсли автоподхват ссылок не нуженНужно проверить старые записи и тему
Оставить embed в админкеНе мешает редактору и предпросмотруЕсли контент редактируется частоФронтенд и админка ведут себя по-разному
Не трогать embed вообщеНичего не ломаетЕсли сайт активно использует встраиванияЛишний скрипт остаётся

Пошаговое решение через functions.php или мини-плагин

Самый безопасный путь — не править ядро и не лезть в тему напрямую, если у вас есть дочерняя тема или свой мини-плагин. Для отключения фронтенд-скрипта используйте стандартный хук wp_enqueue_scripts.

<?php
add_action( 'wp_enqueue_scripts', function () {
    if ( ! is_admin() ) {
        wp_deregister_script( 'wp-embed' );
    }
}, 100 );

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

<?php
add_action( 'wp_enqueue_scripts', function () {
    if ( ! is_admin() && ! is_singular( 'post' ) ) {
        wp_deregister_script( 'wp-embed' );
    }
}, 100 );

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

Если нужен более точный контроль

Иногда достаточно не отключать скрипт полностью, а убрать его только на отдельных шаблонах. Например, на лендингах или страницах с тяжелой версткой. Тогда используйте условные теги WordPress и не затрагивайте записи с контентом, где embed может быть нужен.

<?php
add_action( 'wp_enqueue_scripts', function () {
    if ( is_page_template( 'templates/landing.php' ) ) {
        wp_deregister_script( 'wp-embed' );
    }
}, 100 );

Диагностика после внедрения

Проверка должна быть короткой и воспроизводимой. Не ограничивайтесь тем, что страница «открывается без ошибок».

  1. Откройте страницу в режиме инкогнито.
  2. Посмотрите исходный код и найдите wp-embed.min.js.
  3. Откройте DevTools → Network и обновите страницу.
  4. Убедитесь, что запрос к wp-embed исчез.
  5. Проверьте несколько страниц с разным типом контента: запись, страница, архив, шаблон лендинга.

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

Частые ошибки и как их исправить

Скрипт отключили, а embed в старых записях перестал работать

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

Код добавили в тему, но ничего не изменилось

Частая причина — код вставлен слишком рано или в файл, который не загружается. Для проверки используйте дочернюю тему или мини-плагин. Ещё одна причина — кэш. Если страница отдается из кэша, новый код не проявится сразу.

Сломались стили или появился JS-конфликт

Обычно это не из-за самого wp-embed, а из-за того, что вместе с ним отключили лишнее или использовали не тот хук. Не удаляйте все скрипты подряд через агрессивные оптимизаторы без проверки зависимостей. Сначала снимайте только один конкретный handle.

Что ещё можно оптимизировать рядом с embed

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

Если вы используете плагин для технической чистки сайта, например Clearfy Pro, проверьте, не отключает ли он embed уже на уровне настроек. В таком случае не дублируйте ту же оптимизацию кодом, иначе потом сложнее искать источник проблемы.

Безопасность и поддерживаемость

Не вносите изменения прямо в родительскую тему. После обновления они пропадут. Для точечных правок лучше подходит дочерняя тема или небольшой mu-plugin. Это особенно важно, если сайт поддерживает несколько редакторов и изменения должны переживать обновления ядра, темы и плагинов.

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

Как понять, что решение сработало

  • в HTML больше нет подключения wp-embed.min.js на тех страницах, где вы его отключали;
  • страницы с обычным текстом и ссылками отображаются без изменений;
  • вставки, которые вы решили сохранить, продолжают работать;
  • после очистки кэша поведение одинаковое в инкогнито и в обычном браузере;
  • в консоли нет новых ошибок, связанных с embed-логикой темы или плагинов.

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

×
до 3225₽

Продавай темы и плагины WordPress!

Лови с каждой продажи

Начать ⋙