В WordPress поддержка emoji включена по умолчанию, и на части сайтов это превращается в лишние подключения к wp-emoji-release.min.js, дополнительные фильтры в <head> и ненужную работу на фронтенде. Если сайт не использует старые браузеры и вам не нужна эта совместимость, emoji можно отключить аккуратно — без влияния на обычный текст, редактор и комментарии.
Ниже разберём, как понять, что именно грузится, какие способы отключения реально работают, как проверить результат и где чаще всего ломают настройку.
Когда отключение emoji действительно имеет смысл
Сценарий простой: вы открываете страницу в DevTools и видите отдельный запрос к скрипту emoji, а в исходнике страницы — инлайн-скрипт, который подготавливает проверку поддержки emoji в браузере. На современных проектах это редко даёт большой выигрыш само по себе, но в сумме с другими мелкими оптимизациями помогает убрать лишний код из фронтенда.
Отключать emoji имеет смысл, если:
- сайт рассчитан на современные браузеры;
- вам важна минимизация лишних запросов и инлайн-кода;
- вы уже чистите
<head>от ненужных элементов; - на сайте нет требований к старым клиентам, где emoji могли отображаться некорректно без полифилла.
Если аудитория включает очень старые устройства или корпоративные браузеры с ограниченной поддержкой, сначала проверьте, не критична ли вам эта совместимость. В обычном случае отключение безопасно.
Диагностика: что именно добавляет WordPress
Проверка начинается не с кода, а с факта загрузки. Откройте главную страницу и посмотрите:
- исходный HTML в браузере;
- вкладку Network в DevTools;
- наличие запроса к
wp-emoji-release.min.js; - инлайн-блок с функцией, которая подменяет emoji-рендеринг.
Если у вас включён кэш или минификация, проверяйте не только главную, но и обычную внутреннюю страницу без авторизации. Иногда оптимизатор уже убирает часть кода, и тогда отключение в WordPress почти ничего не меняет — это нормально.
Как быстро понять, что emoji ещё активны
Самый практичный способ — поиск по исходнику страницы. Если в HTML есть упоминание wp-emoji-release.min.js или emoji в блоке скриптов WordPress, значит, стандартная поддержка ещё подключается. Дополнительно можно посмотреть, не добавляет ли её тема или плагин повторно через собственные хуки.
Рабочий способ: отключить emoji через functions.php или mu-plugin
Самый надёжный вариант — убрать стандартные действия WordPress через хук init. Лучше делать это не в теме, а в небольшом mu-plugin, если вы не хотите потерять настройку при смене темы.
<?php
/**
* Plugin Name: Disable WP 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' );
} );Этот код отключает:
- скрипт проверки emoji в
<head>; - стили emoji в админке и на сайте;
- замену emoji в RSS и письмах.
Если вы вставляете код в functions.php, убедитесь, что тема дочерняя. Иначе при обновлении изменения пропадут.
Если нужен только фронтенд, а админку трогать не хочется
Иногда удобнее оставить 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 | Отключает стандартные emoji-хуки WordPress | Прозрачно, без лишних зависимостей, легко проверить | Нужно один раз аккуратно внедрить |
| functions.php | То же самое, но в теме | Быстро | Слетает при смене темы или обновлении |
| Оптимизатор/плагин чистки | Может убирать emoji вместе с другими мелкими оптимизациями | Удобно, если уже используете такой плагин | Не всегда очевидно, что именно отключено |
Если у вас уже стоит плагин для технической чистки, например Clearfy Pro, проверьте, не отключает ли он emoji отдельной опцией. Но для точечной задачи код обычно надёжнее: видно, что именно выключено, и проще отлаживать.
Проверка результата после внедрения
После добавления кода не ограничивайтесь визуальной проверкой страницы. Нужно убедиться, что WordPress действительно перестал подключать emoji-скрипты.
- Откройте страницу в режиме инкогнито.
- Посмотрите исходный код и найдите
wp-emoji-release.min.js. - Проверьте вкладку Network — запроса к этому файлу быть не должно.
- Откройте админку и убедитесь, что редактор и комментарии работают штатно.
- Если есть RSS-лента или email-уведомления, проверьте, что emoji в них не ломаются.
Если после внедрения скрипт всё ещё грузится, значит, его добавляет не ядро WordPress, а тема или плагин. Тогда ищите прямой вызов wp_enqueue_script или инлайн-код в шаблонах.
Частые ошибки и как их исправить
Код вставили слишком поздно
Если вы пытаетесь снять действия WordPress после того, как они уже отработали, ничего не изменится. Код должен выполняться на init, а не в шаблоне страницы.
Отключили только скрипт, но оставили стили
Иногда убирают print_emoji_detection_script, но забывают про print_emoji_styles. В результате часть лишнего кода остаётся в <head>. Проверяйте оба места.
Сломали RSS или письма
Если вы удалили фильтры неаккуратно, emoji могут начать отображаться как символы-заменители в лентах и уведомлениях. Для этого и нужны фильтры the_content_feed, comment_text_rss и wp_mail в примере выше — их лучше снимать вместе со скриптом.
Проверяли только кэшированную страницу
После изменения кода очистите кэш плагина, серверный кэш и CDN, если он есть. Иначе вы будете смотреть на старую версию HTML и решите, что настройка не сработала.
Безопасность и производительность: что учесть
Отключение emoji — это не «ускоритель в один клик», а маленькая техническая чистка. Смысл есть только в комплексе с другими точечными правками: удалением лишних скриптов, оптимизацией <head>, контролем автозагрузки и кэшем.
Если вы делаете это на клиентском проекте, храните изменения в mu-plugin или в отдельном небольшом плагине. Так проще:
- переносить настройку между темами;
- отслеживать изменения в Git;
- не терять правку при обновлении шаблона.
И ещё один практический момент: не отключайте всё подряд «для скорости». Сначала проверьте, что именно реально грузится на странице, и только потом убирайте лишнее. В WordPress мелкие оптимизации работают лучше, когда они адресные.
Если нужна более широкая техническая чистка сайта — дубли, лишние скрипты, служебные элементы и прочие мелочи — удобнее собрать это в один управляемый набор настроек, а не размазывать по теме. В таком сценарии можно посмотреть на Clearfy Pro, если вам нужен именно плагин для системной чистки, а не точечный код.
Что должно получиться в итоге
После отключения emoji на фронтенде вы должны увидеть:
- отсутствие запроса к
wp-emoji-release.min.js; - исчезновение emoji-скрипта из
<head>; - отсутствие лишних стилей emoji;
- корректную работу контента, комментариев и админки.
Если всё это выполнено, настройка сделана правильно. Дальше уже имеет смысл смотреть на более заметные источники лишней нагрузки, а не на косметические элементы, которые WordPress добавляет по умолчанию.