Как отключить emoji в WordPress и убрать лишние скрипты из шапки и футера

WordPress до сих пор по умолчанию добавляет поддержку emoji через отдельный скрипт и несколько служебных проверок. На обычном сайте это редко критично, но на проектах, где считают каждый запрос и чистят шапку от лишнего мусора, эти подключения обычно убирают. Важно сделать это аккуратно: не сломать редактор, не затронуть админку и не перепутать отключение emoji с отключением всего wp-emoji-release.min.js на фронтенде.

Когда отключение emoji действительно имеет смысл

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

Отключение emoji обычно оправдано, если:

  • сайт работает на русском или другом языке, где emoji не завязаны на отдельную серверную логику;
  • вы не хотите видеть в исходнике дополнительные inline-скрипты и внешний файл wp-emoji-release.min.js;
  • нужно привести фронтенд к более чистому виду перед аудитом производительности;
  • на сайте есть строгая политика по минимизации сторонних подключений.

Диагностика: где именно WordPress подключает emoji

Проверять нужно не «на глаз», а по исходному коду страницы. Откройте любую публичную страницу сайта и посмотрите HTML в браузере. Обычно вы увидите либо inline-скрипт в <head>, либо подключение служебного файла через wp-emoji-release.min.js. В более старых конфигурациях это может сопровождаться добавлением emoji-проверок в DOM.

Если у вас установлен плагин для оптимизации, он может уже частично отключать emoji. Тогда важно не дублировать логику двумя способами: сначала проверьте, не делает ли это плагин, а потом уже добавляйте код в тему или mu-plugin.

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

  • есть ли в <head> inline-блок с проверкой emoji;
  • подключается ли wp-emoji-release.min.js;
  • не добавляет ли ваш кэш-плагин собственную минификацию, из-за которой код трудно найти;
  • не отключено ли это уже в теме или через functions.php.

Как отключить emoji в WordPress без побочных эффектов

Самый прозрачный способ — снять стандартные действия WordPress через remove_action() и отключить фильтры, которые добавляют emoji-скрипты и стили. Это работает на фронтенде и не ломает админку, если вы не трогаете лишнее.

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

<?php
/**
 * Disable WordPress emoji scripts and styles on the front end.
 */
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' );
} );

add_filter( 'emoji_svg_url', '__return_false' );

Этот вариант убирает стандартные подключения WordPress. Если у вас есть плагин, который отдельно вставляет emoji-скрипты, его нужно настраивать отдельно — ядро WordPress это не отключит.

Если нужен более жесткий вариант через mu-plugin

Когда тема часто меняется или над сайтом работает несколько разработчиков, лучше вынести отключение в отдельный файл в wp-content/mu-plugins/disable-emoji.php. Тогда код будет загружаться всегда, независимо от активной темы.

<?php
/**
 * Plugin Name: Disable Emoji
 */

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' );
} );

add_filter( 'emoji_svg_url', '__return_false' );

Сравнение подходов: плагин, код или настройка кэша

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

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

Проверка результата после внедрения

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

  1. Откройте страницу сайта в режиме инкогнито и посмотрите исходник.
  2. Убедитесь, что нет wp-emoji-release.min.js и inline-скрипта emoji в <head>.
  3. Откройте DevTools → Network и обновите страницу с отключенным кэшем браузера.
  4. Проверьте, что в админке редактор и комментарии работают как обычно.

Если вы используете WP-CLI, можно быстро проверить, не осталось ли в теме или плагинах собственного кода, который снова подключает emoji. Для этого обычно достаточно обычного поиска по файлам проекта:

grep -R "wp-emoji-release.min.js\|print_emoji_detection_script\|print_emoji_styles" wp-content/

Если поиск ничего не нашел, а в исходнике скрипт все равно есть, значит подключение идет не из вашего кода, а из другого плагина или из кэширующего слоя, который отдает старую версию страницы.

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

Отключили только один хук

Иногда убирают только print_emoji_detection_script, но оставляют стили или SVG-URL. В итоге часть служебного кода остается, и эффект получается неполным. Исправление простое: отключайте весь набор хуков, а не один фрагмент.

Добавили код в родительскую тему

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

Сломали админку из-за слишком агрессивной оптимизации

Если вы начали резать не только emoji, но и другие скрипты в admin_print_scripts, можно задеть редактор или уведомления в панели. Не смешивайте отключение emoji с общей зачисткой админки без отдельной проверки.

Не очистили кэш

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

Что еще можно убрать рядом, если цель — чистый фронтенд

Отключение emoji — это только один из мелких технических шагов. Если вы уже занимаетесь чисткой сайта, рядом обычно смотрят на:

  • лишние версии CSS и JS, которые добавляет тема;
  • эмбеддинги WordPress, если они не нужны;
  • ненужные REST-запросы на страницах без интерактива;
  • дублирующиеся метатеги и служебные ссылки в <head>.

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

Короткий чек-лист перед публикацией изменений

  • код добавлен в дочернюю тему или mu-plugin;
  • отключены print_emoji_detection_script и print_emoji_styles;
  • проверен исходный код страницы;
  • очищен кэш сайта и CDN;
  • проверена админка и редактор;
  • поиск по wp-content не показывает дублирующее подключение emoji.

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

⭐⭐⭐⭐⭐