WordPress до сих пор по умолчанию подгружает небольшой набор скриптов и стилей для поддержки emoji. На современных сайтах это часто лишняя нагрузка: дополнительный запрос, лишний код в <head> и еще один повод для вопросов в Lighthouse или при ручной проверке фронтенда.
Если сайт не ориентирован на старые браузеры и вы не используете специфические сценарии, emoji-обвязку обычно можно убрать безопасно. Но делать это лучше не «на глаз», а после диагностики: важно понять, откуда именно подключаются скрипты и не ломает ли их отключение сторонняя тема или плагин.
Когда отключение emoji действительно имеет смысл
Речь не о косметике ради косметики. Убирают emoji-скрипты обычно в трех случаях: когда нужно сократить число запросов на главной и в шаблонах, когда в отчете по производительности всплывает лишний JavaScript, и когда на сайте уже вычищают все необязательные элементы из <head>.
Если у вас тяжелая тема, много плагинов и параллельно идет работа над кешированием, оптимизацией CSS/JS и чисткой метаданных, этот шаг логично вписывается в общую техническую уборку. Но если сайт активно редактируют в старых окружениях или вы не уверены в совместимости, сначала проверьте поведение на staging.
Диагностика: что именно подключает WordPress
По умолчанию WordPress добавляет в <head> инлайн-скрипт и отдельный файл для emoji. На фронтенде это видно в исходном коде страницы, а в DevTools — в списке загружаемых ресурсов. Проверять нужно именно фактическую загрузку, а не только наличие кода в теме.
Как быстро убедиться, что проблема есть
- Откройте исходный код страницы и найдите
wp-emoji-release.min.js. - Проверьте, есть ли в
<head>инлайн-блок с настройками emoji. - Посмотрите вкладку Network в DevTools и обновите страницу с отключенным кешем.
- Если используете PageSpeed Insights или Lighthouse, сравните отчет до и после правки.
Если файл не грузится, а в коде только остается небольшой инлайн-блок, значит часть оптимизации уже сделана темой, плагином кеша или минификации. В таком случае не стоит дублировать отключение двумя способами сразу.
Пошаговое решение через functions.php
Самый предсказуемый способ — убрать стандартные действия WordPress через remove_action(). Это работает в дочерней теме или в небольшом mu-plugin. Для большинства сайтов этого достаточно.
<?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' );
} );
Этот вариант убирает emoji-скрипты и стили и на фронтенде, и в админке. Если вам важно оставить поддержку emoji в редакторе для контент-менеджеров, можно ограничиться только фронтендом, но тогда код нужно адаптировать аккуратнее и не трогать админские хуки.
Более точечный вариант для фронтенда
Если задача — убрать лишнее только на публичной части сайта, используйте отдельную проверку:
<?php
add_action( 'init', function () {
if ( is_admin() ) {
return;
}
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
} );
Такой подход полезен, когда админка нужна без изменений, а фронтенд вычищается под производительность. Но если у вас есть фронтенд-редактор или кастомные формы, проверьте их отдельно.
Что делать, если нужен вариант без правки темы
Если вы не хотите лезть в functions.php, можно вынести код в небольшой mu-plugin. Это удобнее для проектов, где тема часто обновляется или меняется.
<?php
/**
* Plugin Name: Disable Emoji Scripts
*/
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' );
} );
Файл можно положить в wp-content/mu-plugins/. Это хороший вариант для техподдержки и типовых оптимизаций: код не исчезнет после обновления темы и не зависит от настроек обычных плагинов.
Сравнение подходов
| Способ | Плюсы | Минусы | Когда выбирать |
|---|---|---|---|
| functions.php | Быстро, без лишних файлов | Зависит от темы | Если есть дочерняя тема и вы контролируете обновления |
| mu-plugin | Не слетает при обновлении темы | Нужно один раз настроить структуру | Для рабочих проектов и поддержки нескольких сайтов |
| Плагин оптимизации | Удобно, если уже используется | Можно получить дублирующее отключение | Если плагин умеет отключать emoji и вы доверяете его логике |
Как проверить, что решение сработало
Проверка должна быть не только визуальной. После внедрения откройте страницу в режиме инкогнито и посмотрите исходный код. В нем не должно быть wp-emoji-release.min.js и инлайн-скрипта emoji в <head>.
- Проверьте исходный код страницы вручную.
- Сравните список запросов в Network до и после.
- Очистите кеш плагина, сервера и CDN, если он есть.
- Если используется минификация, убедитесь, что она не вернула удаленный код обратно из кеша.
- Откройте админку и проверьте, не появились ли ошибки в редакторе или консоли.
Если вы работаете с несколькими окружениями, тестируйте отдельно staging и production. На staging иногда отключен кеш, и результат там выглядит чище, чем на боевом сайте.
Частые ошибки и как их исправить
Код добавили не туда
Если вставить remove_action() прямо в шаблон страницы, он сработает слишком поздно. Хуки нужно снимать на init или раньше, как в примерах выше.
Отключили только часть хуков
Иногда убирают только print_emoji_detection_script, но забывают про стили. Тогда в коде страницы остается мусор, а эффект от оптимизации неполный.
Оптимизатор вернул emoji обратно
Некоторые плагины кеша или оптимизации могут генерировать объединенный JS на основе старого кеша. После правки обязательно сбросьте кеш и пересоберите минификацию, если она используется.
Сломали админку из-за слишком агрессивной чистки
Если вы убрали все без проверки, можно случайно задеть скрипты редактора или сторонние плагины, которые завязаны на стандартные хуки. Поэтому сначала тестируйте на staging и не смешивайте несколько оптимизаций в одном коммите.
Практические советы по безопасности и производительности
Отключение emoji — это маленькая оптимизация, но она хорошо работает в связке с другими техническими правками: удалением лишних мета-тегов, отключением неиспользуемых эмбедов, чисткой <head> и настройкой кеша. Главное — не превращать это в набор случайных твиков без проверки.
Если вы ведете сайт как проект, а не как разовую сборку, удобно держать такие правки в одном месте: в mu-plugin или в отдельном служебном плагине. Так проще откатывать изменения и не искать, где именно была отключена очередная мелочь.
Для сайтов, где важна системная чистка технического мусора, можно посмотреть в сторону инструментов вроде Clearfy Pro: он закрывает часть типовых задач по оптимизации и удалению лишнего кода из WordPress. Но даже в этом случае стоит понимать, какие именно опции включены, чтобы не отключить лишнее случайно.