oEmbed в WordPress удобен, пока сайт не начинает тянуть лишние запросы к wp-json/oembed/1.0, грузить отдельный JS и держать поддержку встраиваний там, где она не нужна. На небольших и средних сайтах это чаще всего лишняя функциональность: вы не вставляете чужие посты по URL в редакторе, а значит платите за механизм, который почти не используете.
Но отключать его нужно аккуратно. Если на сайте есть вставки из YouTube, X/Twitter, Vimeo или других сервисов через стандартный блок «Вставка по ссылке», простое удаление oEmbed может сломать отображение части контента. Ниже — рабочий сценарий: как понять, нужен ли oEmbed, как отключить его без побочных эффектов и как проверить результат.
Когда oEmbed действительно лишний
Сначала стоит понять, что именно вы хотите убрать. В WordPress oEmbed затрагивает не только автоподстановку превью по URL в редакторе. Он также добавляет:
- REST-эндпоинты для получения embed-данных;
- скрипт
wp-embedна фронтенде; - служебные ссылки и метаданные в
<head>; - поддержку встраивания контента по URL в блоках и классическом редакторе.
Если сайт использует только обычные ссылки, изображения и ручные iframe-вставки, oEmbed можно отключать. Если редакторы регулярно вставляют публикации по ссылке из соцсетей или сервисов, лучше оставить механизм включённым либо отключить только часть его функций.
Быстрая диагностика
Перед изменениями проверьте три вещи:
- Есть ли на сайте блоки с автоподстановкой встраиваний по URL.
- Используются ли внешние вставки, которые завязаны на oEmbed.
- Есть ли лишние запросы к
/wp-json/oembed/1.0/embedв DevTools или в отчёте по производительности.
Если вы видите запросы к oEmbed на страницах, где встраивания не используются, это хороший кандидат на отключение.
Как отключить oEmbed без поломки сайта
Самый безопасный путь — убрать фронтенд-скрипт и отключить автосвязывание URL в встраивания. Для этого достаточно небольшого кода в functions.php дочерней темы или в собственном плагине.
add_action( 'init', function () {
// Убираем поддержку oEmbed в редакторе и на фронтенде.
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
add_filter( 'embed_oembed_discover', '__return_false' );
add_filter( 'oembed_dataparse', '__return_false' );
add_filter( 'tiny_mce_plugins', function( $plugins ) {
if ( is_array( $plugins ) ) {
$plugins = array_diff( $plugins, array( 'wpembed' ) );
}
return $plugins;
} );
} );
add_action( 'wp_enqueue_scripts', function () {
wp_deregister_script( 'wp-embed' );
} );Этот вариант подходит, если вам не нужны автоподстановки по ссылке и вы не хотите держать лишний фронтенд-скрипт. Но если на сайте уже есть старые записи с встраиваниями, сначала проверьте их вручную на тестовой копии.
Если нужен более мягкий вариант
Иногда достаточно убрать только скрипт wp-embed, а сам механизм оставить для редактора. Тогда на фронтенде станет меньше служебной нагрузки, но вставки по URL в админке продолжат работать.
add_action( 'wp_enqueue_scripts', function () {
wp_deregister_script( 'wp-embed' );
}, 100 );Это компромиссный вариант. Он не отключает oEmbed полностью, но убирает одну из самых заметных лишних сущностей на публичной части сайта.
Сравнение подходов
| Способ | Что убирает | Риск | Когда выбирать |
|---|---|---|---|
Только wp-embed | Фронтенд-скрипт | Минимальный | Если нужны вставки в редакторе, но не нужен лишний JS |
| Отключение маршрута и фильтров | oEmbed как механизм | Средний | Если сайт не использует вставки по URL |
| Плагин оптимизации | Часть настроек без кода | Зависит от плагина | Если нужен быстрый контроль без правки темы |
Если вы уже используете плагин для технической чистки сайта, проверьте, умеет ли он отключать oEmbed без побочных эффектов. Например, в Clearfy Pro есть набор настроек для отключения лишних функций WordPress, и это удобнее, чем править код на каждом проекте вручную.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой главной страницы. Нужна проверка по факту, а не «ничего не сломалось на глаз».
- Откройте исходный код страницы и убедитесь, что
wp-embed.min.jsбольше не подключается. - Проверьте, что в
<head>нет лишних ссылок на oEmbed discovery. - В DevTools на вкладке Network отфильтруйте запросы по
oembedи убедитесь, что они не появляются при обычной загрузке страницы. - Откройте несколько старых записей с внешними вставками и проверьте, что они отображаются так, как задумано.
Если вы отключали oEmbed полностью, обязательно проверьте редактор: вставка URL в новый пост не должна внезапно превращаться в пустой блок или ошибку загрузки.
Частые ошибки и как их исправить
Отключили oEmbed, но забыли про старые записи
Если в контенте были вставки по URL, после отключения они могут перестать рендериться. Решение простое: либо вернуть поддержку oEmbed, либо заменить такие вставки на обычный iframe/HTML-блок.
Удалили не тот хук и сломали редактор
Иногда пытаются вырезать слишком много сразу, включая связанные фильтры в админке. Если редактор начал вести себя странно, откатите изменения и отключайте только фронтенд-скрипт, а не весь механизм целиком.
Проверили только главную страницу
oEmbed может использоваться не на главной, а в отдельных типах записей или шаблонах. Проверяйте страницы с разными типами контента: записи, страницы, архивы, шаблоны с блоками и старые материалы.
Сделали правку в родительской теме
Если обновление темы перезапишет functions.php, вы потеряете настройку. Для кода оптимизации лучше использовать дочернюю тему или небольшой mu-plugin.
Что ещё стоит учесть для производительности и безопасности
Отключение oEmbed само по себе не делает сайт «быстрым», но убирает один из источников лишней нагрузки и уменьшает поверхность для неожиданных запросов. На практике это полезно в связке с другими техническими правками: чисткой неиспользуемых скриптов, отключением лишних архивов и контролем REST-эндпоинтов.
Если вы не хотите собирать такие настройки вручную, имеет смысл держать их в одном техническом слое, а не размазывать по теме. Это упрощает аудит и откат. Для контентных сайтов с большим количеством служебных блоков иногда удобнее использовать отдельный набор оптимизаций, чем править каждую функцию по отдельности.
Если вам нужно не только отключить oEmbed, но и системно убрать лишние технические сущности WordPress, посмотрите на Clearfy Pro. Важно не сам продукт, а подход: сначала понять, что реально используется на сайте, потом отключать только то, что не нужно.
Мини-чек-лист перед выкладкой на прод
- Проверили, используются ли вставки по URL в старых записях.
- Сделали правку в дочерней теме или mu-plugin.
- Убедились, что
wp-embedбольше не грузится там, где он не нужен. - Протестировали несколько шаблонов и типов записей.
- Сохранили способ быстрого отката.
Если после отключения oEmbed сайт не потерял нужные встраивания и при этом стал чище по запросам, значит задача решена правильно: вы убрали лишнее, а не просто вырезали функциональность наугад.