Если на сайте не нужны встроенные предпросмотры из YouTube, X, Facebook, WordPress.com и других сервисов, oEmbed можно отключить. Это убирает часть лишних запросов, упрощает загрузку страниц и уменьшает количество подключаемых скриптов. Но перед отключением важно понимать, что именно перестанет работать: WordPress больше не будет автоматически превращать ссылки в встроенные карточки и не сможет сам подхватывать некоторые внешние встраивания.
На практике oEmbed отключают на сайтах, где контент пишется вручную, а внешние вставки либо не используются вообще, либо уже реализованы другими способами. Если же у вас много публикаций с ссылками на видео и посты из соцсетей, отключение может заметно изменить внешний вид старых материалов.
Что именно делает oEmbed в WordPress
oEmbed — это механизм, который позволяет WordPress автоматически показывать встроенный контент по обычной ссылке. Например, если вставить ссылку на видео или публикацию из поддерживаемого сервиса, редактор может показать не просто URL, а полноценный предпросмотр или встроенный блок.
В WordPress этот механизм работает в двух направлениях:
- на фронтенде он добавляет поддержку встроенного контента на страницах сайта;
- в админке и редакторе он помогает отображать предпросмотр вставленных ссылок;
- для некоторых источников WordPress может обращаться к внешним API или эндпоинтам, чтобы получить данные для встраивания.
Именно эти обращения и считают лишними, если сайт не использует подобные вставки. Важно понимать, что речь не только о визуальном удобстве. Каждый внешний запрос — это зависимость от стороннего сервиса, его доступности и скорости ответа.
Когда отключение действительно уместно
Отключать oEmbed имеет смысл не на каждом сайте. Это полезно, если:
- вы не вставляете внешние видео, посты и карточки через ссылку;
- контент на сайте состоит в основном из текста, изображений и внутренних блоков WordPress;
- вы хотите сократить количество сторонних запросов и зависимостей;
- нужно убрать лишний код, который WordPress добавляет ради поддержки oEmbed.
Если сайт активно использует встраивания из соцсетей или видеохостингов, лучше не отключать всё сразу. В таком случае разумнее сначала проверить, какие именно встраивания используются в старых и новых записях.
Как отключить oEmbed в WordPress
Самый надёжный способ — добавить небольшой код в тему или в собственный плагин. Для рабочей установки безопаснее использовать дочернюю тему или отдельный mu-plugin, чтобы изменение не пропало после обновления темы.
Перед правкой файлов сделайте резервную копию. Если код добавить с ошибкой, можно получить белый экран или поломать загрузку сайта.
Ниже пример, который отключает встроенные oEmbed-скрипты и связанные с ними фильтры WordPress:
add_action( 'init', function () {
// Убираем автопреобразование ссылок в oEmbed.
remove_filter( 'the_content', array( $GLOBALS['wp_embed'], 'autoembed' ), 8 );
// Отключаем REST endpoint для oEmbed.
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
// Убираем discovery-ссылки из <head>.
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
// Убираем JS-объект wp-embed с фронтенда.
wp_deregister_script( 'wp-embed' );
} );Этот вариант подходит, если вы хотите убрать именно стандартный механизм WordPress. После добавления кода проверьте главную страницу и несколько записей: в исходном коде страницы не должно быть discovery-ссылок oEmbed, а на фронтенде не должен подключаться скрипт wp-embed.
Если вы работаете через плагин для сниппетов, код можно добавить туда. Это удобнее, чем редактировать functions.php, потому что при смене темы настройка не потеряется.
Что изменится после отключения
После отключения oEmbed WordPress перестанет автоматически превращать некоторые ссылки в встроенные блоки. Это главный эффект, и именно его нужно учитывать до внесения изменений.
На практике это означает следующее:
- ссылки на поддерживаемые сервисы будут отображаться как обычные URL;
- старые записи с автоматическими встраиваниями могут выглядеть иначе;
- часть внешних запросов исчезнет, потому что WordPress перестанет подгружать связанные данные;
- уменьшится количество подключаемого фронтенд-кода, если на сайте не нужен
wp-embed.
При этом отключение oEmbed не ускоряет сайт магически само по себе. Эффект зависит от того, как часто на страницах раньше использовались встраивания и сколько внешних обращений они создавали. Если таких вставок не было, разница будет минимальной.
Как проверить, что лишние запросы действительно убраны
После отключения стоит не гадать, а проверить результат. Самый простой способ — открыть страницу сайта в браузере и посмотреть исходный код или сетевые запросы.
Что проверить вручную:
- в HTML-коде страницы нет ссылок вида
wp-json/oembed/1.0/embed; - в
<head>отсутствуют oEmbed discovery links; - скрипт
wp-embed.jsне загружается на фронтенде; - ссылки, которые раньше превращались в встраивания, теперь отображаются как обычный текст.
Если на сайте используется кэш, после изменения кода очистите его. Иначе вы можете смотреть на старую версию страницы и сделать неправильный вывод, что отключение не сработало.
Когда лучше не отключать oEmbed полностью
Есть несколько сценариев, где полное отключение создаст больше проблем, чем пользы. Например, если редакторы регулярно вставляют ссылки на видео или посты и рассчитывают на автоматический предпросмотр. В этом случае после отключения им придётся вручную оформлять встраивания другими блоками или вставлять код embed вручную.
Также стоит быть осторожнее, если на сайте много старого контента. Публикации, которые раньше выглядели нормально благодаря автоматическому встраиванию, после отключения могут потерять часть оформления. Это не ломает саму запись, но меняет её вид и может ухудшить читабельность.
Если нужна не полная отмена, а только сокращение лишних внешних обращений, иногда достаточно убрать именно фронтенд-скрипт wp-embed и проверить, используются ли встраивания в контенте. Но если задача — полностью отключить механизм, лучше убрать и фильтры, и discovery, и REST-роут, как в примере выше.
Что делать, если после отключения что-то сломалось
Если на сайте перестали корректно отображаться старые вставки, сначала верните код назад и проверьте, действительно ли проблема связана именно с oEmbed. Иногда внешние сервисы меняют свои правила встраивания, и ошибка совпадает по времени с отключением, но не вызвана им.
Если сайт работает нестабильно после правки, откатите изменения из резервной копии. Для WordPress это нормальная практика: сначала безопасно проверить на тестовой копии, а уже потом переносить на боевой сайт.
В реальной работе я бы рекомендовал такой порядок: сначала определить, используются ли на сайте автоматические встраивания, затем отключить oEmbed на тестовой среде, проверить несколько старых и новых записей и только после этого переносить изменение на продакшн. Так вы уберёте лишние внешние запросы без неожиданной поломки контента.