WordPress до сих пор добавляет в сайт поддержку emoji через отдельные скрипты и фильтры. На небольшом проекте это обычно незаметно, но на технически чистом сайте лишние подключения в <head> и в футере не нужны: они увеличивают число запросов, засоряют HTML и иногда мешают привести фронтенд к аккуратному виду.
Важно понимать: речь не о том, чтобы «сломать смайлики», а о том, чтобы отключить именно старый механизм WordPress для emoji, если он вам не нужен. Современные браузеры и так умеют отображать emoji без дополнительной помощи.
Когда это имеет смысл
Отключать emoji стоит не ради абстрактной оптимизации, а в конкретных сценариях:
- вы чистите
<head>и убираете все лишние подключения; - сайт проходит аудит производительности, и вы хотите сократить количество мелких запросов;
- на проекте есть строгие требования к минимальному фронтенду;
- вы поддерживаете старую тему или набор кастомных функций и хотите убрать ненужный код без визуальных изменений.
Если сайт активно используется в старых браузерах или вы точно знаете, что часть аудитории сидит на очень старых устройствах, сначала проверьте, действительно ли вам не нужен этот механизм. Для большинства современных проектов он не требуется.
Диагностика: где WordPress добавляет emoji-код
По умолчанию WordPress подключает небольшой скрипт, который проверяет поддержку emoji в браузере, а также может добавлять inline-логику и фильтры в контент. Это видно в исходном коде страницы: ищите упоминания wp-emoji-release.min.js и связанные с ним инлайны.
Проверить можно быстро:
- Откройте страницу сайта в браузере.
- Посмотрите исходный код страницы.
- Найдите
wp-emoji-release.min.jsили строки сemojiв подключениях.
Если код есть, но вы не используете emoji-обработку WordPress, его можно убрать штатно, без правки ядра.
Как отключить emoji штатно через functions.php
Самый прямой способ — снять действия и фильтры, которые WordPress добавляет для emoji. Это можно сделать в дочерней теме или в небольшом 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' );
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' );
remove_filter( 'the_content', 'wp_staticize_emoji' );
remove_filter( 'comment_text', 'wp_staticize_emoji' );
} );Этот вариант рабочий для обычного сайта на WordPress. Он убирает и фронтенд, и часть административных подключений. Если у вас кастомная админка или плагины, которые завязаны на старый emoji-скрипт, после внедрения проверьте редактор и форму комментариев.
Почему лучше не править ядро
Иногда встречается совет удалить код прямо из файлов WordPress. Так делать не стоит: обновление всё вернёт назад, а при ошибке вы получите лишнюю точку отказа. Штатное снятие хуков безопаснее и предсказуемее.
Альтернатива: убрать emoji через плагин оптимизации
Если вы уже используете плагин для чистки сайта, иногда удобнее включить эту опцию там, чем держать отдельный код в теме. Например, в Clearfy Pro есть инструменты для удаления лишних элементов и технической чистки WordPress. Это полезно, когда вы хотите собрать такие настройки в одном месте и не разносить их по теме и кастомным сниппетам.
| Подход | Когда подходит | Компромисс |
|---|---|---|
Код в functions.php | Нужен точечный контроль | Надо следить за темой и обновлениями |
| mu-plugin | Нужно независимое от темы решение | Чуть сложнее для новичка |
| Плагин оптимизации | Уже есть централизованная чистка сайта | Добавляется зависимость от плагина |
Пошаговое решение без риска
Если нужен практический порядок действий, делайте так:
- Сделайте резервную копию файлов и базы.
- Добавьте код отключения emoji в дочернюю тему или mu-plugin.
- Очистите кэш сайта и CDN, если он используется.
- Откройте главную страницу и несколько внутренних страниц.
- Проверьте исходный код и убедитесь, что
wp-emoji-release.min.jsисчез. - Зайдите в админку, откройте редактор записи и форму комментариев, если они включены.
Если после изменения вы не видите эффекта, почти всегда причина в кэше или в том, что код добавлен не в том месте. Для проверки лучше временно отключить кэш-плагин или очистить его полностью, а затем обновить страницу в режиме инкогнито.
Как проверить, что решение сработало
Проверка должна быть не «на глаз», а по конкретным признакам:
- в исходном коде страницы больше нет
wp-emoji-release.min.js; - в
<head>не выводится emoji detection script; - в админке редактор и комментарии работают как раньше;
- в письмах и RSS не появляются неожиданные изменения форматирования.
Если вы используете инструменты разработчика, откройте вкладку Network и обновите страницу. Запрос к emoji-скрипту должен исчезнуть. Это самый простой способ убедиться, что отключение реально сработало, а не просто «спряталось» в кэше.
Частые ошибки и как их исправить
Код вставили в неправильный файл
Если добавить сниппет в файл, который не загружается на всех страницах, часть сайта останется без изменений. Для стабильности используйте дочернюю тему или mu-plugin.
Отключили не все хуки
Иногда убирают только wp_head, но забывают про стили в админке или фильтры для RSS и email. В итоге код частично остаётся. Лучше использовать полный набор remove_action и remove_filter.
Не очистили кэш
После правки исходный код может выглядеть старым из-за страниц, сохранённых в кэше плагина, сервера или CDN. Очистка кэша — обязательный шаг.
Сломали совместимость с плагином
Если какой-то плагин неожиданно рассчитывал на emoji-скрипт, проблема проявится в редакторе или в админских формах. В таком случае откатите изменение и проверьте, действительно ли этот плагин требует старую поддержку emoji. На современных сайтах это редкость, но тестировать всё равно нужно.
Практические советы по производительности и безопасности
Отключение emoji само по себе не делает сайт «быстрее в разы», и не стоит продавать это как магическую оптимизацию. Но в наборе с другими техническими правками оно помогает убрать лишний шум из фронтенда. Если вы уже чистите сайт, имеет смысл одновременно проверить:
- не грузятся ли лишние стили и скрипты в шапке;
- нет ли дублей мета-тегов и ненужных подключений от темы;
- не добавляет ли плагин оптимизации конфликтующие минификации;
- не ломает ли кэширование динамические части сайта.
Если нужен более широкий набор технической чистки, удобнее собирать такие настройки централизованно, а не размазывать по нескольким сниппетам. Это снижает риск забыть, где именно включено или выключено то или иное поведение.
Что делать, если emoji всё равно остаются
Если после штатного отключения в коде страницы всё ещё есть следы emoji, проверьте три вещи:
- нет ли второго сниппета, который снова подключает emoji;
- не добавляет ли код сам плагин оптимизации;
- не смотрите ли вы старую версию страницы из кэша браузера или CDN.
В редких случаях тема или плагин могут вставлять собственные emoji-решения. Тогда надо искать уже не в ядре WordPress, а в конкретном компоненте, который добавляет этот код.
Если задача стоит шире, чем просто убрать emoji, и вы одновременно чистите сайт от технического мусора, имеет смысл делать это в одном проходе: отключить лишние скрипты, проверить head, затем пройтись по кэшу и индексации. Так проще поймать конфликт до публикации изменений на боевом сайте.