В WordPress до сих пор по умолчанию подключается небольшой набор скриптов и стилей для поддержки emoji. На современных сайтах это часто лишняя нагрузка: дополнительные запросы в <head>, лишний JavaScript и еще один источник шума в отчётах по производительности. Если сайт не рассчитан на старые браузеры и вы не завязаны на специфическую обработку эмодзи в контенте, этот функционал обычно можно отключить без заметных побочных эффектов.
Ниже разберём, что именно отключать, как не сломать админку и как проверить, что WordPress действительно перестал грузить эти ресурсы.
Когда это имеет смысл
Отключение emoji-скриптов не решает все проблемы скорости, но в технически аккуратном проекте это нормальная чистка фронтенда. Особенно если вы уже убрали лишние плагины, настроили кеш и хотите выжать ещё немного из базовой установки WordPress.
Сценарии, где это уместно:
- сайт ориентирован на современный браузерный стек;
- вы следите за количеством запросов в
<head>и хотите убрать всё необязательное; - в Lighthouse или WebPageTest видно лишний inline-скрипт, связанный с emoji;
- вы поддерживаете собственную тему и предпочитаете отключать неиспользуемые ядровые функции точечно, а не через тяжёлые плагины.
Диагностика: что именно грузит WordPress
По умолчанию WordPress добавляет проверку поддержки emoji через хук wp_head и подключает скрипт, который помогает отображать эмодзи в старых окружениях. На практике это выглядит как дополнительные inline-данные или отдельный файл, который можно увидеть в исходнике страницы.
Проверять нужно не «на глаз», а по факту:
- Откройте исходный код страницы и найдите упоминания
emoji. - Посмотрите вкладку Network в DevTools и отфильтруйте запросы по слову
emoji. - Если используете PageSpeed Insights или Lighthouse, сравните отчёт до и после отключения.
Важно: если на сайте есть контент, где эмодзи критичны для отображения в старых браузерах, отключение может быть нежелательным. Для большинства современных проектов это уже не проблема, но проверка нужна именно на вашем стеке.
Как отключить emoji-скрипты в WordPress
Самый надёжный способ — добавить код в functions.php дочерней темы или в собственный мини-плагин. Так вы не зависите от настроек темы и не потеряете изменения при обновлении.
Вариант через functions.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' );
} );Этот набор отключает не только фронтенд-часть, но и связанные стили и фильтры, которые WordPress использует для статических преобразований emoji в контенте и письмах.
Если нужен более аккуратный мини-плагин
Для проектов с несколькими разработчиками удобнее вынести отключение в отдельный 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' );
} );Если вы работаете в продакшене, это предпочтительнее, чем правка темы: логика не смешивается с версткой, а откатить изменение проще.
Сравнение подходов
| Способ | Плюсы | Минусы |
|---|---|---|
| Код в дочерней теме | Быстро, без лишних плагинов | Зависит от темы, можно потерять при смене |
| Мини-плагин / MU-plugin | Стабильно, удобно для команды | Нужно один раз аккуратно оформить |
| Плагин для оптимизации | Удобно, если уже используете такой инструмент | Часто отключает больше, чем нужно |
Если у вас уже стоит плагин для технической чистки сайта, например Clearfy Pro, проверьте, не дублируете ли вы отключение через код и через интерфейс. Двойная настройка обычно не ломает сайт, но усложняет поддержку.
Как проверить, что решение сработало
После внедрения важно убедиться, что WordPress больше не выводит emoji-скрипты и стили.
- Откройте исходный код страницы и проверьте, что нет вызова
print_emoji_detection_scriptи связанных inline-блоков. - В DevTools на вкладке Network убедитесь, что запросы с
emojiисчезли. - Сравните HTML до и после: в
<head>должно стать на несколько строк меньше. - Проверьте админку: отключение не должно мешать редактированию записей и комментариев.
Если используете кэширование на уровне сервера или плагина, очистите кеш перед проверкой. Иначе вы можете смотреть на старую версию страницы и сделать ложный вывод.
Частые ошибки и как их исправить
Код добавили не туда
Если вставить код в файл темы, который не загружается на всех страницах, отключение будет частичным. Для такой задачи лучше использовать functions.php дочерней темы или отдельный плагин.
Отключили только фронтенд
Иногда убирают только wp_head, а стили и фильтры в админке остаются. Это не критично, но цель тогда не достигнута полностью: лишние ресурсы всё ещё могут попадать в часть страниц.
Проверяли без очистки кеша
Если на сайте есть page cache, CDN или серверный кеш, старый HTML может сохраняться. В таком случае кажется, что код не сработал, хотя проблема только в неочищенной копии страницы.
Сломали совместимость с устаревшими браузерами
Это редкий сценарий, но если аудитория сайта включает очень старые браузеры, отключение emoji-поддержки может изменить отображение символов. Перед внедрением проверьте реальные пользовательские устройства и браузеры, а не только локальную разработку.
Практические советы по безопасности и производительности
Отключение emoji-скриптов — мелкая оптимизация, но она хорошо работает в связке с другими техническими правками. Не стоит превращать её в отдельный «магический» шаг: сначала уберите лишние плагины, затем проверьте кеш, потом уже чистите мелкие ядровые ресурсы.
Если вы ведёте проект на постоянной основе, держите такие изменения в отдельном техническом слое: MU-plugin, дочерняя тема или репозиторий с конфигурацией. Это снижает риск случайно потерять оптимизацию после обновления темы.
Для сайтов, где важна именно системная чистка WordPress, имеет смысл смотреть на инструменты, которые позволяют отключать лишние элементы ядра и контролировать технические настройки из одного места. Но даже в этом случае проверяйте, что конкретно отключается, а не включайте всё подряд.
В итоге задача сводится к простой проверке: если в исходнике и в Network больше нет emoji-ресурсов, а сайт работает без побочных эффектов, отключение выполнено корректно.