Встроенная поддержка emoji в WordPress редко нужна на обычном сайте, но её скрипты и фильтры продолжают загружаться даже тогда, когда вы их не используете. На небольшом проекте это не критично, а вот на сайте с жёсткой оптимизацией фронтенда лишние подключения лучше убрать осознанно и проверить результат, а не надеяться на кэш-плагин.
Речь не о «сломать смайлики в контенте», а о том, чтобы отключить именно механизм подгрузки wp-emoji-release.min.js и связанные с ним действия в wp_head и wp_print_styles. Если на сайте не нужна старая кроссбраузерная подмена emoji, это безопасная оптимизация.
Когда отключение emoji действительно имеет смысл
Сначала стоит понять, есть ли у вас реальная проблема. На современных браузерах WordPress-emoji почти всегда дублируют нативную поддержку системы. Если вы смотрите отчёт по запросам в DevTools или Lighthouse и видите лишний JavaScript, это нормальный повод убрать его. Особенно если вы уже чистите фронтенд от ненужных подключений и следите за количеством запросов в шапке страницы.
Диагностика: что именно искать
Проверьте исходный код страницы и список сетевых запросов. Ищите:
wp-emoji-release.min.jsв HTML;- инлайн-скрипт, который добавляет классы
emojiиno-js; - подключение стилей, связанных с emoji, если они есть в вашей версии ядра или в связке с плагинами оптимизации.
Если вы не видите этих элементов, значит, emoji уже отключены темой, плагином оптимизации или кастомным кодом. Тогда дублировать решение не нужно.
Как отключить emoji через functions.php или mu-plugin
Самый прозрачный способ — убрать действия WordPress на уровне темы или, лучше, через mu-plugin. Так настройка не потеряется при обновлении темы. Для большинства сайтов достаточно одного файла с несколькими remove_action().
<?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' );
} );Если вы добавляете код в тему, логика та же, но лучше не привязывать такую оптимизацию к теме, которую можно сменить. Для постоянных технических правок mu-plugins обычно надёжнее.
Что делает этот код
Он отключает только встроенную проверку emoji и вывод связанных скриптов/стилей. Обычный текст, символы и emoji в контенте не исчезают. В современных браузерах они будут отображаться штатно средствами самой системы.
Плагин или код: что выбрать
Если на сайте уже стоит плагин для технической очистки, удобнее снять галочку в интерфейсе. Если нужен точечный контроль без лишних настроек, код проще и предсказуемее. Ниже — короткое сравнение.
| Подход | Плюсы | Минусы |
|---|---|---|
Код в mu-plugin | Не зависит от темы, легко проверить в репозитории | Нужен доступ к файлам |
| Плагин оптимизации | Удобно для менеджера сайта, меньше ручной работы | Может быть лишняя логика поверх простой задачи |
| Ничего не делать | Ноль риска сломать что-то вручную | Остаются лишние подключения |
Если вы уже используете технический плагин вроде Clearfy Pro, проверьте, нет ли там отдельной опции отключения emoji. Это удобнее, чем держать ещё один кусок кастомного кода. Но если задача точечная, код обычно чище.
Пошаговое решение без лишних рисков
- Сделайте резервную копию файла, куда будете вносить изменения.
- Добавьте код в
mu-pluginили вfunctions.phpдочерней темы. - Очистите кэш сайта, если используется кэш-плагин или серверный кэш.
- Откройте страницу в режиме инкогнито и проверьте исходный код.
- Сравните список сетевых запросов до и после изменения.
Если у вас включён CDN или агрессивная минификация, проверяйте не только HTML, но и итоговый ответ после всех слоёв кэширования. Иногда старый HTML остаётся в кеше, и кажется, что код не сработал.
Как проверить, что отключение emoji сработало
Проверка должна быть практической. Не ограничивайтесь тем, что «страница открывается». Откройте исходный код и убедитесь, что в нём больше нет wp-emoji-release.min.js. Затем в DevTools на вкладке Network обновите страницу и посмотрите, исчез ли этот запрос.
Дополнительно можно проверить через командную строку, если у вас есть доступ к серверу:
curl -s https://example.com/ | grep -i emojiЕсли команда ничего не возвращает, это хороший знак, но всё равно проверьте страницу в браузере. На сайтах с кэшем и динамическими блоками лучше смотреть оба источника.
Что считать нормальным результатом
- в HTML нет ссылок на emoji-скрипт;
- в Network нет отдельного запроса к
wp-emoji-release.min.js; - сайт по-прежнему корректно показывает emoji в контенте;
- админка WordPress не потеряла базовую функциональность.
Частые ошибки и как их исправить
Ошибка 1: код добавили в родительскую тему. После обновления он пропадёт. Перенесите его в дочернюю тему или в mu-plugin.
Ошибка 2: отключили emoji и сразу увидели старый HTML. Это почти всегда кэш. Очистите плагин кэша, серверный кэш и CDN, если он есть.
Ошибка 3: удалили не только emoji, но и лишние хуки в админке. Не трогайте больше, чем нужно. Для этой задачи достаточно стандартных remove_action().
Ошибка 4: проверили только главную страницу. Иногда тема или плагин выводят отдельные шаблоны. Проверьте записи, страницы и архивы, если они у вас по-разному собираются.
Безопасность и производительность
Отключение emoji — мелкая оптимизация, но она полезна именно тем, что не требует тяжёлых компромиссов. Здесь важно не превратить простую правку в набор случайных «ускорителей». Если вы уже чистите сайт, держите изменения изолированно: один файл, одна задача, одна проверка.
Для сайтов с регулярной технической поддержкой удобно вести такие правки в отдельном mu-plugin. Тогда можно быстро понять, что именно отключено, и не искать это по шаблонам темы. Если нужен более широкий набор настроек очистки, имеет смысл смотреть в сторону инструментов, где такие опции собраны в одном месте, например в Clearfy Pro: https://wpshop.ru/plugins/clearfy.
Главный принцип здесь простой: отключайте только то, что реально не используется, и сразу проверяйте результат на живой странице. Тогда оптимизация останется контролируемой, а не станет источником новых багов.