В WordPress поддержка emoji включена по умолчанию и тянет за собой дополнительный JavaScript и проверки в браузере. На небольших сайтах это часто незаметно, но если вы чистите фронтенд от лишних запросов, оптимизируете Core Web Vitals или просто хотите убрать ненужный код, emoji-скрипты — один из самых безопасных кандидатов на отключение.
Важно понимать: речь не о запрете эмодзи как символов, а только о штатной подгрузке скрипта wp-emoji-release.min.js и связанных с ним фильтров. Сам контент с эмодзи продолжит работать.
Когда это действительно имеет смысл
Отключать emoji-скрипты стоит не «на всякий случай», а когда есть конкретная задача: уменьшить число запросов, убрать лишний inline-код, сократить работу на каждой странице или привести сайт к более строгому техническому стандарту. На современных проектах это обычно делается вместе с очисткой других мелких хвостов WordPress.
Типичные сценарии
- сайт на классической теме или кастомной сборке, где важна чистота фронтенда;
- много страниц, и вы последовательно убираете все необязательные скрипты;
- есть замечания по Lighthouse или PageSpeed, и вы уже вычистили более крупные проблемы;
- нужна предсказуемая загрузка без лишних проверок в
<head>.
Диагностика: как понять, что emoji-скрипт реально грузится
Перед изменениями проверьте, что именно подключается на сайте. Откройте исходный код страницы и найдите упоминания wp-emoji-release.min.js или инлайн-скрипта, который создаёт тест на поддержку emoji. В DevTools это видно и в списке Network, если страница загружается без кеша.
Что искать в исходнике
wp-emoji-release.min.jsв/wp-includes/js/wp-emoji-release.min.js;- инлайн-блок с проверкой canvas и sessionStorage;
- подключение в
<head>до основного контента.
Если скрипт не найден, значит тема или плагин уже отключили его раньше. В этом случае дублировать код не нужно.
Пошаговое решение: отключаем emoji штатным способом
Самый надёжный вариант — убрать действия и фильтры через functions.php дочерней темы или через небольшой mu-plugin. Это лучше, чем править ядро или вставлять код в случайный плагин для сниппетов, который потом можно забыть выключить.
Вариант через functions.php
<?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' );
} );Этот код убирает emoji-обвязку из фронтенда, админки, RSS и писем. Для большинства сайтов этого достаточно.
Вариант через mu-plugin
Если вы ведёте несколько правок и не хотите зависеть от темы, создайте файл wp-content/mu-plugins/disable-emoji.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' );
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' );
} );Если нужен более чистый вариант: отключаем и фильтры, и DNS-prefetch
В старых установках WordPress emoji-логика может оставлять ещё и лишние prefetch-запросы. Если вы хотите убрать всё, что связано с этой функцией, можно дополнительно отключить фильтр, который добавляет DNS-prefetch для emoji CDN.
<?php
add_filter( 'emoji_svg_url', '__return_false' );На практике это редко критично, но на проектах, где вы считаете каждый внешний вызов, такой шаг уместен. После него проверьте исходник и список сетевых запросов ещё раз.
Сравнение подходов
| Способ | Плюсы | Минусы | Когда выбирать |
|---|---|---|---|
Код в functions.php | Быстро, без плагинов | Зависит от темы | Если у вас дочерняя тема и вы контролируете деплой |
| mu-plugin | Не зависит от темы, удобно для техподдержки | Нужно создать отдельный файл | Если сайт обслуживается регулярно |
| Плагин для оптимизации | Можно управлять из админки | Лишняя прослойка, не всегда нужен весь функционал | Если вы уже используете плагин для чистки WordPress |
Если на сайте уже стоит плагин вроде Clearfy Pro, отключение emoji обычно можно сделать вместе с другими настройками чистки WordPress без ручного кода. Это удобно, когда вы одновременно убираете дубли, лишние мета-теги и другие мелкие элементы. Подробности можно посмотреть на странице плагина: https://wpshop.ru/plugins/clearfy.
Проверка результата после внедрения
После добавления кода не ограничивайтесь визуальной проверкой сайта. Нужно убедиться, что скрипт действительно исчез из фронтенда и что админка не потеряла базовую функциональность.
Чек-лист проверки
- откройте страницу в режиме инкогнито и проверьте исходный код;
- убедитесь, что
wp-emoji-release.min.jsбольше не загружается; - проверьте, что в
<head>не осталось инлайн-скрипта emoji; - откройте редактор записей и убедитесь, что он работает штатно;
- если есть RSS-ленты и письма, проверьте, что эмодзи в них отображаются как обычные символы;
- сравните количество запросов до и после в DevTools.
Если вы используете кеш-плагин или серверный кеш, очистите его перед проверкой. Иначе можно увидеть старую версию страницы и сделать ложный вывод.
Частые ошибки и как их исправить
Код добавили не туда
Если вставить сниппет в файл темы, которая потом обновится, правка исчезнет. Для постоянного решения используйте дочернюю тему или mu-plugin.
Удалили не все хуки
Иногда убирают только print_emoji_detection_script, но забывают про стили или фильтры для RSS и писем. В результате часть emoji-логики остаётся в системе, и проверка показывает неполный результат.
Проверяли без очистки кеша
Это самая частая причина ложных срабатываний. Браузерный и серверный кеш могут держать старую версию страницы, поэтому всегда очищайте кеш перед тестом.
Сломали не emoji, а другой оптимизационный плагин
Если у вас уже есть плагин, который управляет скриптами в <head>, не дублируйте логику в нескольких местах. Иначе потом сложно понять, кто именно удалил нужный ресурс.
Практические советы по безопасности и производительности
Отключение emoji — мелкая оптимизация, но она хорошо работает как часть системного подхода. Не стоит превращать сайт в набор случайных сниппетов. Лучше собирать такие правки в одном месте, документировать их и проверять после обновлений WordPress.
- храните технические сниппеты в mu-plugin или в отдельном репозитории;
- после обновления WordPress быстро перепроверяйте фронтенд и админку;
- не отключайте то, что не измеряли: сначала найдите реальный лишний код;
- если используете плагин оптимизации, держите список включённых опций;
- на продакшене тестируйте изменения сначала на staging-копии.
Если задача не ограничивается emoji, а вы планомерно чистите сайт от технического шума, удобнее делать это через один инструмент, а не через россыпь разрозненных правок. Но даже в этом случае полезно понимать, какой именно хук вы отключаете и как потом это проверить.