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

На небольших и средних сайтах WordPress oEmbed часто не нужен, но его скрипты и служебные запросы продолжают грузиться в <head>. Это не критичная проблема, но на практике она добавляет лишний код, лишние HTTP-запросы и иногда мешает чистке фронтенда, если вы уже вычищаете тему от всего необязательного.

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

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

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

Отключать его имеет смысл, если:

  • сайт не использует автоподстановку embed по ссылкам;
  • вставки видео и картинок делаются вручную через блоки или iframe;
  • вы хотите убрать лишние подключения в head и уменьшить количество служебного кода;
  • нужно привести фронтенд к более предсказуемому виду для аудита производительности.

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

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

Перед изменениями откройте исходный код страницы и найдите такие элементы:

  • wp-embed.min.js;
  • <link rel="alternate" type="application/json+oembed" ...>;
  • <link rel="alternate" type="text/xml+oembed" ...>;
  • запросы к /wp-json/oembed/1.0/embed.

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

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

Самый практичный вариант — убрать фронтенд-скрипт и связанные с ним discovery-теги, но оставить редактор и админку в покое. Для этого можно добавить код в functions.php дочерней темы или в собственный мини-плагин.

Вариант 1: отключить oEmbed на фронтенде

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

add_action( 'wp_head', function () {
	// Удаляем ссылки discovery для oEmbed.
	remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
	remove_action( 'wp_head', 'wp_oembed_add_host_js' );
}, 1 );

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

Вариант 2: отключить oEmbed полностью

Если автоподстановка embed не нужна вообще, можно дополнительно убрать REST-маршрут oEmbed и фильтры, связанные с преобразованием ссылок. Делайте это только если понимаете последствия для редакторов и контент-редакции.

<?php
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' );
	remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
	remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
} );

add_filter( 'embed_oembed_discover', '__return_false' );

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

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

ПодходЧто убираетРискКогда выбирать
Плагин для чистки фронтендаЧасть лишних подключений без кодаЗависимость от стороннего решенияЕсли не хотите править тему руками
Код в дочерней темеТолько нужные элементыНужно тестировать после обновленийЕсли нужен точечный контроль
Полное отключение oEmbedВесь механизм автоподстановкиМожет повлиять на редакторов и старый контентЕсли embed на сайте не используется вообще

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

Пошаговая настройка без лишнего риска

  1. Сделайте резервную копию файлов и базы.
  2. Проверьте, используется ли oEmbed на сайте в старых и новых записях.
  3. Добавьте код отключения только на тестовой копии сайта.
  4. Очистите кеш страницы, если используется плагин кеширования или серверный кеш.
  5. Откройте несколько страниц и убедитесь, что embed-скрипт исчез из исходника.
  6. Проверьте редактор: вставка ссылок и работа блоков не должны ломаться, если вы отключали только фронтенд.

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

Проверка должна быть не визуальной, а технической. Смотрите на три вещи:

  • в исходнике страницы больше нет wp-embed.min.js;
  • в <head> исчезли discovery-ссылки oEmbed;
  • в Network нет запросов к /wp-json/oembed/1.0/embed при обычной загрузке страницы.

Если скрипт всё ещё есть, значит его подключает тема, плагин или кешированная версия страницы. В этом случае сначала очистите кеш, затем проверьте, не вставлен ли wp-embed вручную через wp_enqueue_script.

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

Удаляют oEmbed через случайный код из интернета

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

Проверяют только главную страницу

На главной oEmbed может быть не заметен, а на записи или странице с блоком-ссылкой — уже присутствовать. Проверяйте минимум несколько типов страниц: главную, запись, страницу, архив, если он у вас индексируется и активно используется.

Не чистят кеш после правок

Если включён page cache, старый wp-embed.min.js может продолжать отдаваться даже после удаления кода. Очистите кеш плагина, серверный кеш и, если нужно, CDN.

Отключают embed, не проверив редакторов

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

Что ещё можно убрать рядом с oEmbed

Если вы уже чистите head, имеет смысл посмотреть и на другие лишние подключения: emoji, REST-запросы, ненужные стили плагинов, старые шрифты. Но не складывайте всё в один большой файл с десятком отключений без комментариев. Через пару месяцев такой код становится трудно сопровождать.

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

Как отключить XML sitemap в WordPress, если карту сайта генерирует тема или плагин
19.08.2026
Как отключить отправку заказов на почту в WooCommerce и заменить их на уведомления в админке
10.08.2026
WooCommerce: как автоматически удалять неактивные варианты товаров по расписанию
27.09.2026
WooCommerce: как найти и исправить дублирующиеся артикулы (SKU) в продуктах
02.10.2026
WooCommerce: как автоматически удалять неактивные варианты товара
03.10.2026
×
-15%
на премиум-тему
Bono

Создай магазин мечты
на WordPress!

↓ ↓ ↓ ↓ ↓
Купить со скидкой »