WordPress по умолчанию подключает emoji-поддержку на фронтенде и в админке. На небольшом сайте это не критично, но если вы чистите загрузку страницы и убираете лишние HTTP-запросы, этот механизм обычно попадает в список первых кандидатов на отключение. Важно сделать это аккуратно: не сломать редактор, не задеть сторонние плагины и не путать отключение emoji с удалением символов из контента.
Когда отключение emoji действительно имеет смысл
Речь не про «ускорение на глаз», а про конкретную техническую чистку. Отключать emoji имеет смысл, если вы:
- оптимизируете фронтенд и убираете лишние подключения в
<head>; - следите за количеством запросов и хотите убрать ненужный
wp-emoji-release.min.js; - ведёте проект с жёсткими требованиями к чистоте HTML и CSS;
- используете собственную тему и контролируете все зависимости;
- хотите убрать лишний код и в админке, если это не мешает редакторам.
Если у вас сайт для широкой аудитории и контент часто содержит эмодзи, отключение поддержки не удалит сами символы из текста. Но в старых браузерах и некоторых нестандартных окружениях отображение может стать менее предсказуемым. Поэтому сначала проверьте, где именно вы хотите отключить поддержку: только на сайте или ещё и в админке.
Диагностика: что именно подключает WordPress
Обычно проблема видна в исходном коде страницы. Откройте фронтенд и найдите такие элементы:
wp-emoji-release.min.js;- инлайн-скрипт с проверкой canvas для emoji;
- дополнительные фильтры в
wp_headиadmin_print_scripts.
Если вы используете инструменты разработчика, проверьте вкладку Network: там часто видно отдельный JS-файл, который можно убрать без последствий для основного функционала сайта.
Ещё один полезный тест — временно отключить все оптимизирующие плагины и посмотреть, исчезает ли emoji-скрипт. Иногда кеширующий или минифицирующий плагин просто прячет проблему, но не решает её. Тогда после очистки кеша подключение возвращается.
Пошаговое решение через functions.php или mu-plugin
Самый надёжный вариант — добавить код в дочернюю тему или в mu-plugin. Так вы не потеряете изменения после обновления темы.
Вариант 1: отключить 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' );
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' );
} );Этот вариант убирает стандартные подключения WordPress, но не трогает сами символы в контенте. Для большинства проектов этого достаточно.
Вариант 2: отключить только на фронтенде
Если редакторы работают в админке с эмодзи и вы не хотите менять их опыт, отключайте только публичную часть сайта:
add_action( 'init', function () {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
} );Такой подход безопаснее для админки, но оставляет emoji-скрипт в панели управления. Если цель — именно чистка фронтенда, этого обычно достаточно.
Если нужен плагин: когда код лучше не трогать
Если у вас уже есть плагин для технической оптимизации, проверьте, не умеет ли он отключать emoji штатно. Это удобнее, чем держать отдельный кусок кода в теме, особенно если проект ведут несколько человек.
| Подход | Плюсы | Минусы |
|---|---|---|
Код в functions.php | Прозрачно, без лишних зависимостей | Слетает при смене темы, если не использовать дочернюю тему |
mu-plugin | Не зависит от темы, удобно для техподдержки | Нужно один раз правильно развернуть |
| Плагин оптимизации | Удобно для нетехнических редакторов | Ещё одна зависимость, возможны конфликты настроек |
Если вы уже используете технический плагин для чистки WordPress, логично держать такие настройки в одном месте. Например, в Clearfy Pro есть набор опций для отключения лишних элементов WordPress, и это удобнее, чем размазывать код по теме. Но если вам нужен точечный контроль, код остаётся самым предсказуемым вариантом.
Как проверить, что отключение сработало
После внедрения не ограничивайтесь визуальной проверкой страницы. Нужны конкретные признаки:
- в исходном коде страницы больше нет
wp-emoji-release.min.js; - в
<head>отсутствует emoji detection script; - в Network не загружается отдельный emoji JS-файл;
- админка открывается без ошибок JavaScript;
- в письмах и RSS не появились странные символы вместо emoji.
Проверять лучше в двух местах: на публичной странице и в редакторе записи. Если вы отключали emoji только на фронтенде, в админке скрипт может остаться — это нормально.
Для быстрой проверки можно открыть исходный код страницы и поискать строку emoji. Если она всё ещё есть, значит, либо код не сработал, либо его переопределяет другой плагин.
Частые ошибки и как их исправить
Код вставили не туда
Если добавить фрагмент в файл, который не загружается WordPress, ничего не произойдёт. Для темы используйте functions.php дочерней темы, для более надёжного варианта — mu-plugin.
Отключили не все хуки
Иногда убирают только wp_head, но забывают про стили или админку. В результате скрипт исчезает частично, а лишние подключения остаются. Сверяйте код с тем, что реально видите в исходнике.
Сломали совместимость с плагином
Некоторые плагины могут рассчитывать на стандартные фильтры WordPress. Если после отключения emoji появились ошибки в письмах, RSS или редакторе, временно верните фильтры и проверьте, какой именно компонент конфликтует.
Проверяли только кэшированную страницу
Если у вас включён кеш, старый HTML может ещё содержать emoji-скрипт. Очистите кеш плагина, серверный кеш и CDN, а потом перепроверьте исходник.
Практические советы по безопасности и производительности
Само отключение emoji — мелкая правка, но лучше делать её в рамках нормальной технической дисциплины:
- не редактируйте основной файл темы напрямую, если сайт живой;
- храните такие правки в дочерней теме или
mu-plugin; - после обновления WordPress перепроверяйте исходный код страницы;
- если используете плагин оптимизации, не включайте дублирующие настройки в двух местах одновременно;
- перед изменениями сделайте резервную копию и протестируйте на staging-версии.
Если задача шире, чем просто emoji, и вы регулярно чистите WordPress от лишних подключений, удобнее собрать такие настройки в одном техническом плагине или в отдельном mu-plugin. Тогда отключение emoji не будет жить отдельно от остальной оптимизации и не потеряется при следующем редизайне.