В WordPress emoji — это не только смайлики в тексте. По умолчанию ядро подгружает дополнительный скрипт и несколько служебных обработчиков, чтобы одинаково отображать эмодзи в старых браузерах. На современных сайтах это часто лишняя нагрузка: лишний запрос, лишний код в <head> и еще один источник шума в техническом аудите.
Если задача простая — убрать именно этот механизм, а не запретить пользователям вставлять эмодзи в контент, решение обычно сводится к двум вариантам: отключить через код или через плагин для технической чистки. Ниже — оба подхода, с проверкой результата и типичными ошибками.
Когда отключение emoji действительно имеет смысл
Отключать emoji стоит не «на всякий случай», а когда вы видите конкретную причину. Например, в отчете Lighthouse или PageSpeed есть лишние ресурсы от WordPress core, а на сайте нет задачи поддерживать старые браузеры. Или вы ведете проект, где важна минимизация фронтенд-обвязки: корпоративный сайт, лендинг, блог с жесткими требованиями к чистоте шаблона.
При этом важно не путать два разных сценария:
- отключить поддержку emoji в фронтенде — убрать служебный скрипт и стили WordPress;
- запретить пользователям вставлять emoji — это уже отдельная задача, обычно решается на уровне редактора, контентной политики или фильтрации текста.
Диагностика: что именно загружается
Перед изменениями откройте исходный код страницы и найдите подключение, связанное с emoji. В классической установке WordPress это выглядит как инлайн-скрипт или подключение, которое добавляет ядро через wp_head и wp_print_styles. Если тема или плагин уже оптимизируют head, вы можете не увидеть явного файла, но в HTML все равно останутся следы.
Проверять лучше в трех местах:
- исходный код страницы в браузере;
- вкладка Network в DevTools;
- отчет по производительности после очистки кэша.
Если на сайте стоит кэш-плагин или серверный кэш, не забудьте очистить его до и после правки. Иначе вы будете смотреть на старую версию страницы и делать неверные выводы.
Как отключить emoji через код
Самый прямой способ — убрать стандартные действия WordPress, которые отвечают за emoji. Этот вариант подходит, если вы можете править functions.php дочерней темы или вынести код в небольшой mu-plugin.
Вариант для 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, и убирает преобразование emoji в RSS и письмах. Если вам нужно оставить emoji в письмах или фидах, не удаляйте соответствующие фильтры.
Если вы работаете с дочерней темой, лучше не вставлять это в основной шаблон темы, который может быть перезаписан при обновлении. Для стабильности удобнее использовать mu-plugins: файл в wp-content/mu-plugins/disable-emoji.php будет загружаться автоматически.
Когда код лучше плагина
Код предпочтителен, если вы ведете несколько проектов и хотите предсказуемое поведение без лишней админки. Это также удобнее для ревизии: в репозитории сразу видно, что именно отключено и зачем.
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в mu-plugin | Стабильно, не зависит от темы, легко контролировать в Git | Нужен доступ к файлам и базовое понимание структуры сайта |
| Плагин | Быстро включить без правки кода | Еще один плагин в системе, иногда избыточен |
| Ничего не делать | Не нужно вмешательство | Лишний фронтенд-код остается в шаблоне |
Как отключить emoji через плагин
Если не хочется трогать код, используйте плагин для технической оптимизации. В экосистеме WordPress это обычно решается через плагины, которые умеют отключать ненужные функции ядра, чистить head и сокращать количество служебных подключений. Например, в Clearfy Pro есть набор настроек для отключения лишних функций WordPress, включая emoji.
Плюс такого подхода в том, что вы можете собрать несколько оптимизаций в одном месте: убрать emoji, отключить embeds, почистить лишние мета-теги, не распыляя настройки по разным сниппетам. Минус — зависимость от интерфейса плагина и риск включить лишнее, если не понимать, что именно меняется.
Пошаговое решение без лишних рисков
- Сделайте резервную копию файлов и базы или хотя бы снимите точку восстановления на хостинге.
- Определите, где будете менять поведение: в mu-plugin, в дочерней теме или через плагин.
- Внесите только одно изменение — отключение emoji.
- Очистите кэш сайта, CDN и браузера.
- Проверьте исходный код главной страницы и нескольких внутренних страниц.
- Откройте админку и убедитесь, что редактор работает без ошибок.
Как проверить, что отключение сработало
Проверка должна быть не «на глаз», а по конкретным признакам. После внедрения откройте страницу и убедитесь, что:
- в
<head>больше нет emoji detection script; - в HTML не подгружаются связанные с emoji стили WordPress;
- в Network нет отдельного запроса, относящегося к этому механизму;
- редактор записей и комментарии работают как обычно;
- RSS-лента и письма, если вы их не отключали отдельно, отображаются без неожиданных изменений.
Если у вас есть доступ к тестовому окружению, сравните исходный HTML до и после. Это самый надежный способ увидеть, что именно исчезло, а не просто «кажется, стало легче».
Частые ошибки и как их исправить
Код добавили не туда
Если вставить сниппет в файл темы, который не загружается на всех страницах, отключение будет частичным. Для системных правок лучше использовать mu-plugins или дочернюю тему. Если правите основную тему, обновление может затереть изменения.
Очистили не весь кэш
Очень частая ситуация: код уже добавлен, но в браузере и на сервере осталась старая версия страницы. Сначала очищайте кэш плагина, затем серверный кэш, затем CDN, и только после этого проверяйте HTML.
Отключили лишнее вместе с emoji
Иногда берут готовый сниппет из интернета и удаляют не только emoji, но и другие фильтры, не понимая их назначения. В результате ломаются письма, RSS или часть контента в старых интеграциях. Если вам нужен только фронтенд, не трогайте фильтры для email и feed без необходимости.
Проверяют только главную страницу
На главной может быть один шаблон, а на записях и страницах — другой. Проверяйте несколько типов страниц, особенно если тема использует разные шаблоны и блоки.
Безопасность и производительность: что учесть
Отключение emoji само по себе не делает сайт «быстрым» и не заменяет нормальную оптимизацию. Но это хороший пример того, как стоит подходить к технической чистке: убирать только то, что реально не используется. Не ставьте десяток плагинов ради одной мелкой настройки, если можно обойтись одним аккуратным изменением.
Если вы ведете проект на регулярной основе, держите такие правки в репозитории и фиксируйте их в changelog. Тогда при обновлении темы или ядра будет проще понять, что уже отключено и почему.
Для сайтов, где важна системная чистка WordPress, имеет смысл смотреть на инструменты, которые закрывают несколько подобных задач сразу. Но даже в этом случае проверяйте каждую опцию отдельно: отключение emoji, embeds, лишних мета-тегов и других функций — это разные изменения с разным эффектом.