Как отключить emoji и oEmbed в WordPress без ломки верстки и лишних запросов

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

Если задача не в «выжать максимум из PageSpeed любой ценой», а в аккуратной технической чистке, лучше отключать эти вещи точечно и с проверкой. Ниже — рабочие способы для темы и плагина, а также сценарии, где отключать нельзя.

Когда это вообще имеет смысл

Отключение emoji и oEmbed полезно, если сайт:

  • не использует встроенные эмодзи WordPress в старом формате;
  • не полагается на автоподстановку внешних ссылок в превью;
  • работает на кастомной теме или в связке с кэшем и CDN;
  • имеет лишние запросы в wp_head() и хочет сократить шум в HTML.

Если редакторы регулярно вставляют ссылки на YouTube, X, Instagram или другие сервисы и рассчитывают на автоматическое встраивание, отключать oEmbed «в лоб» не стоит. В этом случае лучше убрать только внешний автодискавери и оставить нужный сценарий через явный блок или плагин.

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

Перед правкой проверьте, есть ли на сайте оба механизма. Для emoji обычно видно подключение wp-emoji-release.min.js. Для oEmbed — скрипт wp-embed.min.js и дополнительные ссылки discovery в head.

Что искать в исходном коде

Откройте страницу и посмотрите исходник. Если видите такие элементы, они как раз и относятся к теме:

  • wp-emoji-release.min.js;
  • wp-embed.min.js;
  • <link rel="alternate" type="application/json+oembed" ...>;
  • <link rel="alternate" type="text/xml+oembed" ...>.

Если у вас включен Query Monitor или похожий инструмент, можно дополнительно посмотреть список подключенных скриптов и убедиться, что они действительно приходят из ядра WordPress, а не из темы или плагина.

Пошаговое решение через functions.php или mu-plugin

Самый предсказуемый вариант — добавить код в дочернюю тему или в mu-plugin. Для технической чистки я обычно предпочитаю mu-plugin, потому что он не зависит от смены темы.

1. Отключаем emoji

Этот код убирает стандартные действия WordPress, связанные с emoji, и отключает стили/скрипты, которые ядро добавляет на фронтенде и в админке:

<?php
add_action( 'init', function () {
    remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
    remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
    remove_action( 'wp_print_styles', 'print_emoji_styles' );
    remove_action( 'admin_print_styles', 'print_emoji_styles' );
    remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
    remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
    remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
} );

Это стандартный и безопасный способ, если вы не используете старые браузеры и не рассчитываете на специфическое поведение emoji-детектора WordPress.

2. Отключаем oEmbed на фронтенде

Если автоподстановка внешних ссылок не нужна, можно убрать и скрипт, и часть связанных фильтров:

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

    // Отключаем discovery-ссылки oEmbed.
    remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
    remove_action( 'wp_head', 'wp_oembed_add_host_js' );
} );

// Если нужно полностью отключить автоподстановку oEmbed из контента:
add_filter( 'embed_oembed_discover', '__return_false' );

Обратите внимание: wp_deregister_script( 'wp-embed' ) убирает только подключение скрипта. Если тема или плагин рассчитывают на него для конкретных embed-блоков, проверьте это отдельно.

3. Если нужен компромисс, отключайте только discovery

Иногда лучше оставить сам механизм embed, но убрать лишние ссылки discovery из head. Это уменьшает «шум» в HTML и не ломает явные встраивания в редакторе.

<?php
add_action( 'init', function () {
    remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
} );

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

Сравнение вариантов: плагин, код, частичное отключение

ПодходЧто делаетПлюсыМинусы
Код в mu-pluginТочечно отключает emoji и oEmbedКонтроль, не зависит от темыНужно следить за обновлениями и конфликтами
Плагин для чисткиУбирает часть лишних функций ядраБыстро включить без кодаМожет отключать больше, чем нужно
Частичное отключениеУбирает только discovery или только emojiМеньше риск сломать embed-сценарииНе убирает все лишние элементы

Если нужен более широкий набор технической чистки, иногда удобнее использовать Clearfy Pro от WPShop: там есть инструменты для удаления дублей и лишних элементов интерфейса, но перед включением все равно стоит проверить, что именно меняется на вашем сайте. Ссылка: Clearfy Pro.

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

После правки не ограничивайтесь визуальной проверкой. Нужно посмотреть и HTML, и поведение редактора.

  • Откройте исходный код страницы и убедитесь, что исчезли wp-emoji-release.min.js и/или wp-embed.min.js.
  • Проверьте, что в <head> больше нет oEmbed discovery-ссылок, если вы их отключали.
  • Откройте запись с обычной внешней ссылкой и убедитесь, что она не превращается в embed там, где это не нужно.
  • Если используете блоковый редактор, проверьте вставку embed-блока вручную.
  • Сравните список запросов в DevTools до и после изменения.

Для быстрой технической проверки удобно смотреть именно исходник страницы, а не только Lighthouse. Иногда скрипт убран, но фильтр в head остался, и это видно только в HTML.

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

Сломали встраивание видео или постов

Причина обычно в том, что отключили не только автодискавери, но и сам wp-embed, а редакторы рассчитывали на автоматическое встраивание. Решение простое: вернуть wp-embed и убрать только discovery-ссылки, либо перейти на явные embed-блоки.

Код добавили в тему, а потом сменили шаблон

Если правка лежит в functions.php активной темы, при смене темы она исчезнет. Для системных отключений лучше использовать mu-plugin или отдельный мини-плагин.

Отключили emoji, но в админке остались лишние подключения

Частая причина — код удаляет только фронтенд-скрипт, а админские хуки остаются. В рабочем варианте нужно снимать и admin_print_scripts, и admin_print_styles, как в примере выше.

Поставили плагин оптимизации и получили дублирующие изменения

Некоторые плагины уже умеют отключать emoji, embeds и похожие элементы ядра. Если включить отдельный код поверх плагина, можно получить конфликт или двойную обработку. Сначала проверьте, что именно делает плагин, и не дублируйте одну и ту же оптимизацию в двух местах.

Практические советы по безопасности и производительности

Любая чистка ядра должна быть обратимой. Перед изменениями сохраните текущий вариант кода в репозитории или хотя бы в отдельном файле, чтобы быстро откатить правку. На продакшене не редактируйте functions.php напрямую без бэкапа: ошибка в PHP уронит сайт целиком.

Если у вас есть кэш страницы и CDN, после отключения emoji/oEmbed очистите:

  • page cache;
  • object cache, если он используется;
  • кэш CDN;
  • кэш браузера при проверке в DevTools.

И еще момент: если сайт работает в редакторе с большим количеством внешних вставок, не пытайтесь «оптимизировать» это отключением всего подряд. Лучше сначала понять, какие embed-сценарии реально используются редакцией, и только потом убирать лишнее.

Когда лучше не отключать

Не трогайте oEmbed, если сайт активно публикует материалы с автоподстановкой внешних медиа и редакторы не готовы менять процесс. Не отключайте emoji только ради микроскопической экономии, если у вас есть интеграции или старые шаблоны, которые завязаны на стандартное поведение ядра. В таких случаях выигрыш от чистки не стоит риска сломать контентный поток.

Если нужен более широкий аудит технических дублей и лишних функций, имеет смысл смотреть не только на emoji и embeds, но и на другие элементы, которые добавляют шум в HTML и админку. Здесь важнее не «выключить все», а оставить только то, что реально используется сайтом.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как запретить индексацию страниц внутреннего поиска в WordPress
15.09.2026
Как отключить XML sitemap для отдельных типов записей в WordPress
09.09.2026
Как отключить архив авторов в WordPress без потери индексации страниц
12.09.2026
Как закрыть от индексации старые архивные страницы WordPress без поломки SEO
05.09.2026
Как отключить emoji и oEmbed в WordPress без ломки верстки и лишних запросов
18.09.2026
×
Прокачай свой сайт WordPress!

WordPress

-20% на премиум темы и плагины

Создай сайт своей мечты ⋙