Если на сайте нет задачи поддерживать старые браузеры любой ценой, встроенная поддержка Emoji в WordPress часто остаётся лишней нагрузкой. Она добавляет дополнительные скрипты и стили на фронтенде и в админке, а на небольших проектах это просто ещё один источник запросов, который можно убрать без потери функциональности для обычной работы сайта.
Ниже разберём, как отключить Emoji аккуратно: без правки ядра, с проверкой результата и с учётом того, где это действительно безопасно.
Когда отключение Emoji имеет смысл
Сценарий простой: сайт не использует старую логику преобразования символов в Emoji, а аудит производительности показывает лишние подключения wp-emoji-release.min.js и связанных стилей. Это особенно заметно на проектах, где важна чистота фронтенда: лендинги, корпоративные сайты, блоги с минимальным набором скриптов.
Отключение не влияет на возможность вставлять Emoji как символы в текст. Оно убирает именно штатную проверку совместимости и подгрузку вспомогательных файлов WordPress.
Диагностика: что именно грузится сейчас
Перед изменениями проверьте, есть ли на странице ресурсы Emoji. Проще всего открыть исходный код страницы или вкладку Network в DevTools и найти:
wp-emoji-release.min.js;- стили, связанные с Emoji;
- лишние inline-скрипты, которые WordPress добавляет для этой функции.
Если ресурс есть и вы не используете специфическую совместимость для старых клиентов, отключение выглядит оправданным. Если сайт обслуживает очень старые устройства или вы сознательно сохраняете максимальную совместимость, лучше сначала протестировать на staging-копии.
Пошаговое решение без плагинов
Самый надёжный способ — убрать стандартные действия WordPress через хук init. Код можно добавить в functions.php дочерней темы или в собственный небольшой 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' );
} );Этот вариант убирает Emoji и на фронтенде, и в админке. Если вам нужно отключить только публичную часть сайта, а в панели оставить стандартное поведение, удалите только фронтенд-часть:
<?php
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' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
} );Если нужен вариант через плагин
Когда доступ к теме ограничен или изменения должны управляться без кода, можно использовать плагин оптимизации, который умеет отключать Emoji вместе с другими лишними функциями. В таком случае важно не включать сразу десяток оптимизаций без понимания, что именно меняется. Для точечной задачи код обычно прозрачнее и безопаснее.
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в теме или mu-plugin | Точно понятно, что отключено; минимум лишнего | Нужно один раз внести правку |
| Плагин оптимизации | Удобно для неразработчика | Легко включить лишние функции и получить конфликт |
| Ничего не делать | Нулевой риск изменений | Сохраняется лишняя нагрузка |
Как проверить, что решение сработало
После внедрения откройте главную страницу и любую внутреннюю страницу в режиме инкогнито и проверьте исходный код. В нём не должно быть:
wp-emoji-release.min.js;- emoji detection script в
<head>; - стилей Emoji в подключённых CSS.
Дополнительно проверьте админку, если вы отключали Emoji и там тоже. В DevTools можно сравнить список запросов до и после изменения. Если всё сделано правильно, количество лишних ресурсов уменьшится, а функциональность редактора и комментариев останется рабочей.
Частые ошибки и как их исправить
Код добавили не туда
Если вставить фрагмент в активную тему, а потом сменить её, отключение пропадёт. Для постоянной технической настройки лучше использовать дочернюю тему или mu-plugin.
Удалили не те хуки
Иногда пытаются отключить Emoji через случайные фильтры из интернета. Если хук не существует в ядре или относится к другой версии WordPress, эффекта не будет. В рабочем варианте выше используются стандартные функции ядра: print_emoji_detection_script, print_emoji_styles, wp_staticize_emoji.
Сломали письма или RSS
Если убрать только фронтенд-часть, а фильтры для писем и RSS оставить, Emoji могут продолжить преобразовываться в письмах и лентах. Это не критично, но поведение будет неполным. Если цель — полное отключение, убирайте все связанные фильтры.
Проверяли только кэшированную страницу
После изменения очистите кэш плагина, серверный кэш и CDN, если он есть. Иначе вы можете смотреть на старую версию страницы и ошибочно считать, что код не сработал.
Безопасность и производительность: что учесть
Само отключение Emoji — безопасная операция, если вы не правите ядро и не трогаете чужие плагины. Но есть практическое правило: любые оптимизации делайте по одной и проверяйте результат. Так проще понять, что именно повлияло на страницу.
- Сначала сохраните резервную копию или сделайте правку на staging.
- После изменения проверьте главную, записи, архивы и админку.
- Если используете плагин оптимизации, не дублируйте ту же настройку в нескольких местах.
Если задача шире и вы чистите сайт от лишних подключений, дублей и технического мусора, имеет смысл смотреть не только на Emoji, но и на другие штатные функции, которые реально не используются на проекте. В таких сценариях полезны инструменты класса Clearfy Pro, но только если вы понимаете, какие опции включаете и зачем: https://wpshop.ru/plugins/clearfy?utm_source=wpboot.ru&utm_medium=article&utm_campaign=kak-otklyuchit-emojii-v-wordpress-chtoby-uskorit-sajt
После отключения Emoji не ждите магического прироста скорости. Это точечная оптимизация, а не замена нормального кэширования, сжатия изображений или сокращения тяжёлых скриптов. Но как часть общей чистки фронтенда она вполне оправдана.