WPLite

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

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

Задача здесь не в том, чтобы «вырезать всё подряд», а в том, чтобы убрать именно то, что вам не нужно: emoji-обработку, REST-эндпоинт для oEmbed, discovery-ссылки и автоконвертацию ссылок в embed. При этом важно не сломать редактор, если контент реально использует вставки из YouTube, ВК или других источников.

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

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

Что обычно видно в исходном коде

Проверьте страницу в браузере и найдите такие признаки:

  • wp-emoji-release.min.js в подключениях;
  • wp-embed.min.js внизу страницы;
  • ссылки вида <link rel="https://api.w.org/" и <link rel="alternate" type="application/json+oembed";
  • автоматически превращённые ссылки на YouTube/соцсети в iframe без вашего явного кода.

Диагностика: что именно отключать

Не смешивайте все оптимизации в одну правку. Emoji и oEmbed решают разные задачи. Emoji — это в основном фронтенд-скрипт и стили для совместимости. oEmbed — механизм автоподстановки внешнего контента и discovery-метаданных. Если отключить всё сразу и потом искать причину сломанного блока в редакторе, отладка станет лишней.

Самый практичный подход — сначала проверить, используются ли на сайте:

  • вставки внешних видео и постов через обычную ссылку;
  • блоки Embed в редакторе Gutenberg;
  • старые виджеты или плагины, которые рассчитывают на oEmbed;
  • эмодзи в заголовках, кнопках, комментариях или пользовательском контенте.

Если oEmbed нужен только для нескольких страниц, лучше не отключать его глобально, а заменить конкретные вставки на обычный HTML-код iframe или специализированный блок плагина.

Пошаговое решение через код

Надёжнее всего делать это в дочерней теме или через небольшой mu-plugin. Так вы не потеряете изменения при обновлении темы. Ниже пример, который убирает emoji-скрипты и отключает oEmbed на фронтенде.

<?php
/**
 * Plugin Name: WP Lite Optimizations
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

// Отключаем emoji.
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' );

// Отключаем oEmbed на фронтенде.
add_action( 'init', function () {
    wp_deregister_script( 'wp-embed' );
}, 20 );

remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
remove_action( 'wp_head', 'wp_oembed_add_host_js' );

add_filter( 'embed_oembed_discover', '__return_false' );
add_filter( 'oembed_response_data', '__return_false' );

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

Если нужен более мягкий вариант

Иногда достаточно убрать только emoji, а oEmbed оставить. Это разумно, если редакторы часто вставляют внешние ссылки и вы не хотите менять рабочий процесс. Тогда оставьте только блок с remove_action и фильтрами для emoji.

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

Сравнение подходов

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

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

Проверка должна быть не визуальной, а технической. Откройте страницу в режиме инкогнито и посмотрите исходный код. После правки не должно быть:

  • wp-emoji-release.min.js;
  • wp-embed.min.js;
  • oEmbed discovery-ссылок в <head>;
  • автоподключённых emoji-стилей.

Дальше проверьте редактор Gutenberg. Создайте черновик, вставьте обычную ссылку на YouTube или другой внешний ресурс и убедитесь, что нужный блок вставляется так, как вы ожидаете. Если на сайте используются embed-блоки, протестируйте именно их, а не только главную страницу.

Дополнительно можно открыть DevTools → Network и обновить страницу. В списке запросов не должно быть лишних загрузок, связанных с emoji или wp-embed. Это особенно полезно, если вы оптимизируете сайт под строгий бюджет запросов.

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

Отключили oEmbed, а редактор перестал вставлять видео

Значит, на сайте реально использовались embed-блоки или автоконвертация ссылок. Решение простое: либо вернуть oEmbed, либо заменить проблемные вставки на явный iframe-код. Для контента, который часто редактируют разные люди, лучше заранее зафиксировать формат вставки в редакционной инструкции.

Удалили код в теме, а после обновления всё вернулось

Это типичная ошибка, если правка была внесена в родительскую тему. Перенесите код в дочернюю тему или mu-plugin. Для технических отключений это надёжнее и чище.

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

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

Отключили всё ради скорости, но не измерили эффект

Emoji и oEmbed — не главный источник медлительности на большинстве сайтов. Если у вас тяжёлые изображения, неэффективный кеш или перегруженная тема, эффект от этой правки будет ограниченным. Сначала проверьте базовые узкие места: размер страниц, количество запросов, работу кеша и критические скрипты.

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

Если вы вносите такие изменения на живом сайте, делайте это через staging-копию или хотя бы на отдельной тестовой странице. После правки очистите кеш плагина, серверный кеш и CDN, если он есть. Иначе вы можете проверить старую версию страницы и сделать неверный вывод.

Для сайтов с несколькими редакторами полезно зафиксировать правило: если нужен внешний медиа-объект, вставляем его либо через готовый блок, либо через проверенный HTML-код. Это снижает риск случайных поломок после отключения oEmbed.

Если вы используете дополнительные плагины для чистки WordPress, не включайте сразу все опции подряд. Сначала отключите emoji и oEmbed, затем отдельно проверьте, не конфликтуют ли с ними настройки минификации, defer и удаления лишних скриптов.

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше