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

Если в отчёте по производительности вы видите лишние запросы к wp-embed.min.js или хотите убрать автоподстановку встраиваний из чужих URL, отключение embed в WordPress — нормальная техническая задача. Но делать это нужно аккуратно: oEmbed используется не только для красивых превью, но и для встроенного контента в редакторе, комментариях и на сторонних страницах.

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

Когда отключение embed действительно оправдано

Сначала стоит убедиться, что проблема не в другом скрипте. embed имеет смысл отключать, если:

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

Если же на сайте есть вставки из YouTube, VK, RuTube или других сервисов, это не всегда связано с wp-embed. Внешние встраивания обычно работают через отдельные блоки, iframe или плагины, и отключение WordPress embed их не трогает.

Диагностика: что именно грузится и откуда

Перед изменениями откройте страницу в браузере и посмотрите исходный код или вкладку Network. Ищите:

  • /wp-includes/js/wp-embed.min.js;
  • ссылку на wp-embed в списке подключённых скриптов;
  • мета-эндпоинт oEmbed в <link rel="alternate" type="application/json+oembed" ...>;
  • автоподстановку URL в редакторе, если вы вставляете ссылку на запись WordPress и она превращается в карточку.

Если задача только в том, чтобы убрать фронтенд-скрипт, достаточно снять его подключение. Если нужно ещё и отключить сам механизм oEmbed, придётся убрать фильтры и REST-эндпоинты, которые WordPress использует для обмена embed-данными.

Пошаговое решение без плагинов

Самый предсказуемый вариант — добавить код в дочернюю тему или в небольшой mu-plugin. Так проще контролировать изменения и не зависеть от обновлений темы.

1. Отключить скрипт wp-embed

Этот шаг убирает фронтенд-скрипт, который отвечает за поведение embed на сайте.

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

Если тема или плагин подключают скрипт поздно, приоритет 100 помогает снять его после стандартной очереди. Обычно этого достаточно, чтобы wp-embed.min.js исчез из HTML.

2. Отключить oEmbed-обнаружение в WordPress

Если нужно убрать сам механизм автоподстановки, добавьте фильтры ниже. Они отключают discovery, REST-эндпоинты и связанные ссылки в head.

add_action( 'init', function () {
    remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
    remove_action( 'wp_head', 'wp_oembed_add_host_js' );

    add_filter( 'embed_oembed_discover', '__return_false' );
    add_filter( 'oembed_response_data', '__return_false' );
    add_filter( 'rest_endpoints', function ( $endpoints ) {
        if ( isset( $endpoints['/oembed/1.0/embed'] ) ) {
            unset( $endpoints['/oembed/1.0/embed'] );
        }
        if ( isset( $endpoints['/oembed/1.0/proxy'] ) ) {
            unset( $endpoints['/oembed/1.0/proxy'] );
        }
        return $endpoints;
    } );
} );

Этот вариант уже жёстче. Он подходит, когда embed на сайте не нужен вообще, а не только как фронтенд-скрипт.

3. Если нужен только фронтенд-эффект, не трогайте REST

Иногда достаточно убрать только wp-embed и discovery-ссылки в <head>. Это мягче: редактор и системные механизмы WordPress остаются доступными, а лишний скрипт исчезает.

Сравнение подходов

ПодходЧто убираетРискКогда выбирать
Снять wp-embedФронтенд-скриптНизкийНужна только разгрузка страницы
Отключить discovery и RESTМеханизм oEmbed целикомСреднийEmbed на сайте не используется вообще
Плагин оптимизацииЗависит от настроекЗависит от плагинаНужно управлять несколькими оптимизациями из админки

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

Проверка результата после внедрения

После правки проверьте не только HTML, но и поведение сайта:

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

Для быстрой проверки можно выполнить в консоли браузера:

document.querySelectorAll('script[src*="wp-embed"]').length

Если результат 0, скрипт на странице не подключён. Но это ещё не гарантирует, что oEmbed полностью отключён: discovery-ссылки и REST могут оставаться, если вы убрали только один слой.

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

Сняли только wp-embed, но embed всё равно работает

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

Сломались встраивания в редакторе

Чаще всего это происходит, когда отключили слишком много сразу: discovery, REST и host JS. Если редактору нужны предпросмотры ссылок, оставьте мягкий вариант и уберите только фронтенд-скрипт.

Код добавили в functions.php родительской темы

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

Плагин оптимизации и кастомный код делают одно и то же

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

Чек-лист перед публикацией изменений

  • Проверили, используется ли embed на сайте вообще.
  • Сняли только тот уровень, который действительно нужен.
  • Посмотрели исходный код и Network после очистки кэша.
  • Проверили редактор и вставки ссылок на внутренние записи.
  • Убедились, что изменения лежат в дочерней теме или mu-plugin.

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

Отключение embed не даёт магического прироста скорости, но убирает лишний скрипт и часть служебной логики. На небольшом сайте это может быть незаметно, а на проекте с жёсткими требованиями к фронтенду — вполне оправдано.

Если вы работаете с кастомной темой, лучше не править ядро и не удалять файлы WordPress вручную. Поддерживаемый способ — фильтры и wp_deregister_script(). Так обновления не сломают сайт, а откат займёт пару минут.

Когда нужна более широкая чистка технического мусора — отключение дублей, лишних мета-тегов и части служебных подключений — удобнее собрать это в одном месте, например через Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже в этом случае полезно понимать, какой именно код вы выключаете и зачем.

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

Как отключить дубли страниц архива в WordPress и не сломать индексацию
15.08.2026
Как отключить embed в WordPress и убрать лишние запросы
17.09.2026
Как отключить XML-RPC в WordPress без поломки синхронизации и отладить 403
19.08.2026
Как отключить emojis в WordPress без поломки визуализации и лишних запросов
22.08.2026
Как отключить архивы дат в WordPress и не сломать индексацию
08.09.2026

Поддержка по WP: консультации по работе с движком, созданию контента, настройке тем и плагинов.