Если на сайте много страниц и записей, встроенные медиа через oEmbed могут создавать лишние запросы и ненужную нагрузку. Сам WordPress использует oEmbed для автоматического встраивания видео, постов и другого контента по URL, а также подключает связанные скрипты и REST-обращения. На небольшом сайте это обычно незаметно, но на нагруженных проектах имеет смысл отключить то, что не используется.
Самый практичный вариант — убрать oEmbed там, где он не нужен, и оставить обычные вставки через HTML-код или блоки плееров. Это не ломает сайт, если вы заранее проверите, где именно у вас используются автоподстановки по ссылке.
Что именно отключается и что останется работать
В WordPress под oEmbed обычно имеют в виду две вещи: автоматическое преобразование URL в встроенный контент и служебные механизмы, которые помогают этому работать. Например, если вставить ссылку на YouTube или X/Twitter в редактор, WordPress может попытаться показать встроенный блок вместо обычной ссылки.
После отключения:
- обычные ссылки в записи останутся ссылками;
- встраивание через явный HTML-код, iframe или блоки конкретных сервисов продолжит работать;
- автоподстановка контента по URL перестанет срабатывать;
- часть служебных запросов и подключений исчезнет.
Если у вас на сайте много старых записей, сначала проверьте, не завязаны ли они на автозамену ссылок. Иначе после отключения часть встраиваний может отображаться не так, как раньше.
Как отключить oEmbed через код темы или плагина
Надёжнее всего отключать oEmbed через небольшой код в functions.php дочерней темы или в собственном мини-плагине. Так вы не зависите от сторонних настроек и точно понимаете, что именно выключили.
Перед изменениями сделайте резервную копию файлов темы или перенесите код в отдельный плагин. Если ошибиться в functions.php, можно получить белый экран или ошибку PHP.
Добавьте такой код:
add_action( 'init', function () {
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 );
remove_filter( 'the_content', array( $GLOBALS['wp_embed'], 'autoembed' ), 8 );
remove_filter( 'widget_text_content', array( $GLOBALS['wp_embed'], 'autoembed' ), 8 );
remove_filter( 'widget_text', array( $GLOBALS['wp_embed'], 'autoembed' ), 8 );
} );Этот вариант убирает автозагрузку oEmbed в контенте и служебные элементы в <head>. На большинстве сайтов этого достаточно, чтобы сократить лишнюю работу WordPress.
Если вы используете классический редактор и в виджетах у вас были вставки по URL, после отключения они перестанут превращаться во встроенный блок. Это нормальное поведение, а не ошибка.
Как отключить oEmbed без правки темы
Если не хочется трогать файлы темы, можно использовать плагин для вставки кода, который позволяет добавить PHP-фрагмент без редактирования шаблонов. Для владельца сайта это часто безопаснее: обновление темы не затрёт изменения.
Схема простая:
- установите плагин для добавления PHP-кода или создайте маленький собственный плагин;
- вставьте тот же фрагмент, что и выше;
- сохраните изменения и очистите кэш, если он есть;
- проверьте несколько старых и новых записей.
Если у вас уже есть плагин, который умеет отключать лишние функции WordPress, посмотрите, нет ли там отдельной опции для oEmbed. Это удобнее, чем держать свой код, но важно понимать, что именно выключает конкретная настройка.
Когда лучше отключать только часть функций
Полное отключение oEmbed подходит не всем. Иногда на сайте есть несколько страниц, где встраивание по ссылке действительно нужно, а лишняя нагрузка создаётся только из-за служебных скриптов в шапке.
В таком случае можно убрать только discovery-ссылки и host JS, но оставить автоподстановку в контенте. Это компромиссный вариант, если вы хотите уменьшить количество внешних обращений, но не ломать привычную работу редактора.
| Вариант | Что даёт | Когда подходит |
|---|---|---|
| Полное отключение oEmbed | Максимально убирает автозамену и связанные запросы | Если встраивание по URL не нужно вообще |
| Частичное отключение | Снижает нагрузку, но сохраняет часть удобства | Если oEmbed нужен только на отдельных страницах |
| Оставить как есть | Ничего не меняет | Если сайт маленький и нагрузка не критична |
На практике я бы советовал начинать с полного отключения только на тех сайтах, где вы точно не используете автоподстановку по URL. Если сомневаетесь, сначала проверьте контент и только потом убирайте функцию.
Как проверить, что oEmbed действительно отключён
После внесения кода откройте несколько записей и посмотрите исходный HTML страницы. В <head> не должно быть строк, связанных с oEmbed discovery и host JS. Также проверьте, что ссылка на внешний сервис больше не превращается в встроенный блок при вставке в редактор.
Ещё один практичный тест — открыть страницу в режиме инкогнито и посмотреть, не подгружаются ли лишние скрипты, связанные с встраиванием. Если у вас включён кэш, очистите его перед проверкой, иначе вы увидите старую версию страницы.
Если на сайте используется плагин кэширования или CDN, изменения могут быть заметны не сразу. В этом случае очистите кэш на уровне плагина, сервера и CDN, если он есть.
Что даёт отключение oEmbed для скорости
Само по себе отключение oEmbed не сделает сайт мгновенно быстрым, но оно убирает лишнюю работу там, где она не нужна. Это полезно прежде всего на контентных проектах с большим количеством страниц, где каждая мелочь складывается в общую нагрузку.
Плюс здесь не только в скорости. Меньше внешних обращений — меньше зависимость от сторонних сервисов и меньше шансов, что страница будет вести себя по-разному из-за недоступного провайдера встраивания. Для сайтов, где важна стабильность, это вполне практичное решение.
Если вам нужен аккуратный способ чистить WordPress от лишних функций и дублей без ручного разбора каждого файла, можно посмотреть и на Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже без плагинов отключение oEmbed через код решает задачу вполне надёжно.
Если коротко: отключайте oEmbed там, где автовставка по ссылке не нужна, проверяйте старые записи и очищайте кэш после изменений. Это простой способ убрать лишние внешние обращения и немного разгрузить WordPress без риска для основного контента.