Если на сайте не нужны автоматические встраивания WordPress, oEmbed часто остается лишним источником запросов и кода в <head>. Это не самая громкая оптимизация, но в реальных проектах она помогает убрать ненужный JavaScript, сократить число обращений к wp-json и снизить риск конфликтов с темами и плагинами, которые уже по-своему обрабатывают внешние видео и посты.
Речь не о полном запрете вставок ссылок в контенте. Задача проще: отключить именно механизм автоподстановки embed-объектов WordPress там, где он не нужен, и не сломать обычные ссылки в тексте.
Когда oEmbed действительно мешает
Проблема обычно проявляется в одном из трех сценариев:
- на сайте не используют встраивания из Twitter/X, YouTube, Vimeo, Instagram и других источников;
- в
<head>есть лишние подключенияwp-embed.min.jsи связанные с ним обработчики; - в отчетах по производительности видно, что WordPress тянет скрипт, который не дает пользы конкретному проекту.
Если у вас редакция, где авторы часто вставляют внешние ссылки и ожидают автопреобразование в карточки, отключать oEmbed без проверки не стоит. В этом случае лучше сначала понять, где именно используется embed.
Что именно можно отключить
У WordPress есть несколько связанных механизмов: автопреобразование ссылок в embed, REST-эндпоинт oEmbed и фронтенд-скрипт wp-embed. На практике чаще всего убирают все три части, если сайт не использует встраивания вообще.
Диагностика: как понять, что oEmbed можно убрать
Перед правкой кода проверьте сайт в браузере и в исходном HTML. Откройте главную страницу и любую запись, затем найдите:
wp-embed.min.jsв подключенных скриптах;- ссылки на
/wp-json/oembed/1.0/embedили/wp-json/oembed/1.0/proxy; - блоки, которые WordPress автоматически превращает в embed-карточки.
Если вы видите только обычные ссылки без автоподстановки, а встраивания не используются, отключение обычно безопасно. Но если редакторы вставляют YouTube-ролики через URL на отдельной строке, сначала проверьте, не завязан ли этот процесс на oEmbed.
Пошаговое решение без плагинов
Самый надежный вариант — добавить код в functions.php дочерней темы или в собственный мини-плагин. Так вы не потеряете изменения после обновления темы.
1. Отключите oEmbed на фронтенде
add_action( 'init', function () {
// Убираем автопреобразование ссылок в embed.
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
add_filter( 'embed_oembed_discover', '__return_false' );
remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
} );Этот набор отключает основные публичные части oEmbed. Для большинства сайтов этого достаточно, чтобы убрать лишние теги и запросы, связанные с embed.
2. Уберите подключение скрипта wp-embed
add_action( 'wp_enqueue_scripts', function () {
wp_deregister_script( 'wp-embed' );
} );Если тема или плагин не используют wp-embed напрямую, этот шаг убирает еще один ненужный файл с фронтенда. После этого проверьте, не появились ли ошибки в консоли браузера на страницах, где раньше были embed-блоки.
3. Ограничьте oEmbed в редакторе, если это нужно
Иногда автопреобразование мешает именно в админке: редакторы вставляют ссылку, а WordPress пытается показать предпросмотр. Если это нежелательно, можно дополнительно отключить oEmbed-поведение в контенте на уровне редактора, но делать это стоит только после теста на копии сайта.
Сравнение подходов
| Подход | Что делает | Когда подходит | Минус |
|---|---|---|---|
| Плагин для оптимизации | Убирает oEmbed и связанные ресурсы через интерфейс | Если нужен быстрый запуск без кода | Добавляет еще один слой настроек и зависимость |
| Код в теме или мини-плагине | Точечно отключает embed-механизмы | Если нужен контроль и предсказуемость | Требует аккуратной проверки после обновлений |
| Ничего не менять | Оставляет стандартное поведение WordPress | Если embed активно используется | Лишние запросы и скрипты остаются |
Если на сайте уже используется плагин для технической оптимизации, например Clearfy Pro, проверьте, не отключает ли он oEmbed и связанные скрипты уже сейчас. Дублировать такую настройку вручную не нужно.
Проверка результата после внедрения
После добавления кода откройте сайт в режиме инкогнито и проверьте исходный код страницы. В нем не должно быть:
wp-embed.min.js;- ссылок на
oembedв<head>; - автоматических embed-карточек там, где раньше они появлялись без участия редактора.
Дополнительно проверьте:
- страницы с внешними ссылками в контенте;
- записи, где раньше вставляли видео или посты по URL;
- консоль браузера на наличие ошибок JavaScript.
Если embed-карточки исчезли там, где они были нужны, значит отключение оказалось слишком агрессивным. В этом случае откатите изменения и отключайте только wp-embed или только discovery-ссылки, а не весь набор сразу.
Частые ошибки и как их исправить
Код добавили не туда
Частая ошибка — вставить сниппет в файл родительской темы. После обновления он пропадет. Для таких правок лучше использовать дочернюю тему или отдельный мини-плагин.
Отключили oEmbed, но скрипт остался
Так бывает, если убрали только discovery-ссылки, но не сняли регистрацию wp-embed. Проверьте оба участка: wp_head и wp_enqueue_scripts.
Сломались старые записи с встраиваниями
Если в контенте уже есть embed-блоки, а вы отключили поддержку целиком, они могут отображаться как обычный текст или пустой блок. Решение простое: либо вернуть oEmbed, либо заменить такие вставки на обычный HTML-код встраивания.
Появились ошибки в консоли
Это обычно означает, что тема или плагин ожидали wp-embed. В таком случае не отключайте скрипт глобально, а сначала найдите, кто его использует. Иногда достаточно оставить wp-embed, но убрать только REST-эндпоинт и discovery-ссылки.
Практические советы по безопасности и производительности
Если вы работаете с клиентским сайтом, сначала прогоняйте такие изменения на staging-копии. Это особенно важно, когда на сайте есть редакторы, которые регулярно вставляют внешние медиа.
Для более широкой технической чистки имеет смысл смотреть на oEmbed вместе с другими лишними сущностями WordPress: emoji, XML-RPC, неиспользуемые скрипты и дубли в <head>. Но отключать все подряд не стоит — сначала измеряйте, потом убирайте.
Если нужен более системный подход к технической оптимизации, удобно собирать такие правки в одном месте: мини-плагине или в наборе настроек оптимизации. Это проще сопровождать, чем распылять сниппеты по разным файлам темы.
Итоговая проверка простая: embed не используется, лишние запросы исчезли, страницы открываются без ошибок, а редакторы не потеряли нужный функционал. Если все три пункта выполняются, отключение oEmbed сделано корректно.