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

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

Ниже разберём, что именно отключать, как не сломать редактор и как проверить, что WordPress больше не генерирует лишние oEmbed-эндпоинты и автоподключения.

Когда oEmbed действительно мешает

Проблема обычно проявляется не в одном месте, а сразу в нескольких:

  • в исходном коде страниц остаётся подключение wp-embed.min.js, хотя встраивания с WordPress-сайтов не используются;
  • в <head> есть ссылки на oEmbed endpoint и discovery;
  • редактор Gutenberg продолжает грузить предпросмотр встраиваемого контента, хотя на сайте это не нужно;
  • на старых темах и кэширующих плагинах появляются лишние запросы к REST и embed-ресурсам;
  • внутренние ссылки иногда превращаются в предпросмотр карточки, что мешает чистой верстке.

Важно не путать отключение oEmbed на фронтенде с полной поломкой встраиваний в админке. Если вы публикуете посты с YouTube, ВК, RuTube или другими сервисами, это отдельная история: WordPress всё равно может вставлять внешние блоки через редактор, а вот автоподдержка oEmbed для ссылок WordPress-сайтов вам может быть не нужна.

Диагностика: что именно сейчас подключено

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

  • wp-embed.min.js внизу страницы;
  • link rel="alternate" type="application/json+oembed" в <head>;
  • link rel="alternate" type="text/xml+oembed" в <head>;
  • в консоли Network запросы к /wp-json/oembed/1.0/embed;
  • в редакторе при вставке ссылки WordPress-поста появляется блок предпросмотра.

Если у вас установлен плагин оптимизации, сначала проверьте его настройки. Иногда oEmbed уже отключён частично, а ручной код только создаст конфликт и усложнит отладку.

Как отключить oEmbed безопасно

Есть три практических варианта: плагин, код в теме или mu-plugin. Для продакшена чаще всего удобнее код в mu-plugins или в дочерней теме, если вы точно контролируете обновления.

СпособПлюсыМинусыКогда выбирать
Плагин оптимизацииБыстро, без правки кодаМожет отключать лишнее вместе с нужнымЕсли нужен интерфейс и уже есть такой плагин
Код в темеПрозрачно, легко проверитьСлетит при смене темыЕсли тема дочерняя и вы ведёте код сами
mu-pluginНе зависит от темы, всегда загружаетсяНужно один раз создать файлЕсли это системная настройка сайта

Вариант с кодом: отключаем автоподключение и discovery

Добавьте в functions.php дочерней темы или в отдельный mu-plugin такой код:

<?php
/**
 * Disable oEmbed frontend extras.
 */
add_action( 'init', function () {
    // Убираем автоподключение скрипта wp-embed.
    wp_deregister_script( 'wp-embed' );
} );

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', function ( $data ) {
    return $data;
} );

На практике достаточно первых трёх строк: снятие скрипта и удаление discovery-ссылок из <head>. Последний фильтр здесь не обязателен и приведён только как пример того, что не стоит пытаться «ломать всё подряд» без понимания, что именно используется на сайте.

Если нужен mu-plugin

Создайте файл, например wp-content/mu-plugins/disable-oembed.php. Если папки mu-plugins нет, её можно создать вручную. Содержимое файла:

<?php
/**
 * Plugin Name: Disable oEmbed extras
 */

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

remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );

Этот вариант хорош тем, что не зависит от темы и не исчезнет после обновления шаблона.

Что делать, если нужен только фронтенд без редактора

Иногда задача не в полном отключении oEmbed, а в том, чтобы убрать только фронтенд-скрипт и лишние теги, но оставить предпросмотр в админке. Тогда не трогайте всё подряд через глобальные фильтры. Ограничьтесь снятием wp-embed на публичной части сайта и проверьте, не ломаются ли блоки в редакторе.

Если у вас кастомная тема, можно дополнительно проверить, не подключает ли она свой собственный JS для embed-карточек. Встречается редко, но именно такие дубли потом сложно искать, если смотреть только на WordPress-ядро.

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

После правки откройте любую публичную страницу и проверьте три вещи:

  1. В исходном коде нет wp-embed.min.js.
  2. В <head> отсутствуют oEmbed discovery-ссылки.
  3. В Network нет запросов к /wp-json/oembed/1.0/embed при обычной загрузке страницы.

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

Для быстрой проверки можно использовать поиск по исходнику страницы через DevTools или команду вроде curl:

curl -s https://example.com/ | grep -E "wp-embed|oembed|embed"

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

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

Отключили oEmbed через плагин и сломали редактор

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

Сняли скрипт, но теги в head остались

Это значит, что убрали только wp-embed, но не удалили действия wp_oembed_add_discovery_links и wp_oembed_add_host_js. Для чистого результата нужны оба шага.

Проверяли без очистки кэша

Очень частая причина ложного вывода. После изменений очистите кэш плагина, серверный кэш и, если есть, CDN. Иначе в исходнике останется старая версия.

Добавили код в родительскую тему

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

Практические советы по безопасности и производительности

Если вы уже чистите oEmbed, имеет смысл заодно проверить, не держится ли сайт на случайных технических хвостах. На практике полезно:

  • не отключать функциональность «на глаз», а сначала смотреть исходный код и Network;
  • не смешивать в одном фрагменте кода отключение oEmbed, REST и XML-RPC, если задача касается только встраиваний;
  • хранить такие правки отдельно от дизайна темы;
  • после изменений прогонять хотя бы одну реальную публикацию с внутренней ссылкой и одну обычную страницу без встраиваний.

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

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

}
Как отключить XML Sitemap в WordPress без лишних дублей и конфликтов с SEO-плагином
08.09.2026
Как отключить архивы авторов в WordPress без потери индексации
27.08.2026
Как отключить pingback и trackback в WordPress без лишних запросов и мусора в админке
15.09.2026
Как отключить XML-RPC API в WordPress без поломки внешних интеграций
19.09.2026
Как отключить WP-Cron в WordPress и заменить его системным cron
02.09.2026