WordPress до сих пор по умолчанию подгружает скрипт для поддержки emoji. На современном сайте это часто лишняя нагрузка: дополнительный JS в <head>, отдельные проверки в админке и еще один источник запросов, который обычно не нужен, если вы не целитесь в очень старые браузеры.
Задача здесь не в том, чтобы "выключить всё подряд", а в том, чтобы убрать именно фронтенд-часть emoji, не сломав редактор, комментарии и админку. Ниже — рабочие способы, как это сделать аккуратно.
Когда отключение emoji действительно имеет смысл
Если сайт работает на обычной теме и вы не поддерживаете древние браузеры, emoji-скрипт чаще всего не дает практической пользы. Он может быть заметен в аудитах производительности как лишний запрос, а в исходном коде — как набор подключений из wp-emoji-release.min.js.
Отключать его стоит, если:
- вы оптимизируете фронтенд и убираете все необязательные скрипты;
- на сайте есть требования к минимальному числу запросов;
- вы уже проверили, что контент нормально отображается без этой поддержки;
- вам не нужна совместимость со старыми клиентами, где emoji рендерятся через fallback.
Диагностика: где именно WordPress подключает emoji
Перед изменениями полезно понять, что именно вы хотите убрать. WordPress добавляет emoji-поддержку через набор хуков, а не через один файл темы. Поэтому простое удаление скрипта из шаблона обычно не решает проблему полностью.
Что искать в исходном коде
Откройте страницу сайта и посмотрите исходник. Если emoji подключены, вы увидите что-то вроде:
<script type='text/javascript' src='https://example.com/wp-includes/js/wp-emoji-release.min.js?ver=6.x'></script>Иногда рядом будут inline-скрипты с проверкой canvas. Это нормальное поведение WordPress, но для большинства современных сайтов оно лишнее.
Что проверить до отключения
- не используются ли старые корпоративные браузеры;
- нет ли кастомного плагина, который завязан на emoji-обработку;
- не отключает ли уже тема этот функционал частично;
- не стоит ли у вас плагин оптимизации, который сам убирает emoji.
Пошаговое решение через functions.php или mu-plugin
Самый предсказуемый способ — убрать стандартные действия WordPress через remove_action(). Лучше добавлять код не в активную тему, а в маленький mu-plugin, чтобы он не пропал при обновлении темы.
Вариант 1: отключить emoji через код
<?php
/**
* Plugin Name: Disable Emoji Frontend
*/
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-скрипт и стили, а также отключает статическую замену emoji в RSS и письмах. Для большинства сайтов этого достаточно.
Вариант 2: только фронтенд, оставить админку
Если вы хотите убрать emoji только на публичной части сайта, а в админке оставить всё как есть, можно ограничиться wp_head и стилями фронтенда:
<?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' );
} );Это более мягкий вариант, если редакторы привыкли к стандартному поведению WordPress и вы не хотите трогать админскую часть без необходимости.
Вариант 3: через плагин оптимизации
Если у вас уже стоит плагин для технической чистки сайта, проверьте, не умеет ли он отключать emoji без кода. Например, в Clearfy Pro есть отдельные настройки для удаления лишних элементов WordPress, и это удобнее, чем держать кастомный код, если вы не хотите сопровождать его вручную. Ссылка уместна только как пример инструмента: Clearfy Pro.
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в mu-plugin | Прозрачно, быстро, без лишних зависимостей | Нужно не забыть про обновления и контроль |
| Плагин оптимизации | Удобно для редактора и техподдержки | Еще один плагин в стеке |
| Правка темы | Быстро на первый взгляд | Слетит при обновлении темы |
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой. Emoji-скрипт может быть скрыт в кеше или подхвачен плагином оптимизации, поэтому лучше проверить несколько уровней.
- Откройте исходный код главной страницы и убедитесь, что
wp-emoji-release.min.jsбольше не подключается. - Проверьте вкладку Network в DevTools: запрос к emoji-скрипту не должен появляться при перезагрузке страницы.
- Посмотрите HTML в админке и на фронтенде отдельно, если вы отключали только публичную часть.
- Очистите кеш страницы, объектный кеш и CDN, если они используются.
Если у вас включен Page Cache, старый HTML может еще некоторое время отдавать прежний код. Это не ошибка настройки, а обычный эффект кеширования.
Частые ошибки и как их исправить
Удалили код из темы, а emoji остались
Чаще всего причина в том, что код был добавлен не туда или не на тот хук. Еще один вариант — страницу отдает кеш, который не обновили после изменений. Проверьте, что код выполняется на init, а не только внутри шаблона.
Сломались emoji в письмах или RSS
Это происходит, если вы отключили только скрипт, но не подумали о фильтрах wp_staticize_emoji_for_email и wp_staticize_emoji. Если вам важно сохранить корректную обработку в письмах, оставьте эти фильтры включенными и уберите только фронтенд.
Появились проблемы в админке
Так бывает, если вы без разбора удалили и admin_print_scripts, и admin_print_styles, а потом столкнулись с тем, что в редакторе что-то отображается не так. Для безопасного сценария сначала отключайте только публичную часть, а потом уже решайте, нужно ли трогать админку.
Плагин оптимизации возвращает emoji обратно
Некоторые плагины собирают и пересобирают фронтенд-ассеты. Если у них есть собственная опция для emoji, она может переопределять ваш код. В такой ситуации оставьте один источник правды: либо код, либо настройку плагина.
Практические советы по безопасности и производительности
Не редактируйте ядро WordPress и не правьте файлы в wp-includes. После обновления всё вернется назад, а в худшем случае вы получите конфликт версий. Для таких задач mu-plugin — самый чистый вариант.
Если вы ведете несколько сайтов, вынесите отключение emoji в маленький общий сниппет и храните его в репозитории. Тогда вы сможете быстро проверить, где он включен, и не потеряете изменения при миграции.
И еще один практический момент: если вы уже чистите сайт от лишних функций, не смешивайте в один комок все оптимизации сразу. Сначала уберите emoji, потом отдельно проверьте эмбедды, REST-эндпоинты, архивы и другие элементы, которые действительно влияют на фронтенд и индексацию.
Если нужен более широкий набор настроек для технической чистки WordPress, удобно смотреть на инструменты, где отключение emoji — только одна из опций, а не единственная цель. Но в любом случае сначала проверьте, что именно меняется в исходнике и как это влияет на ваш стек.