Если на сайте WordPress не нужны встроенные emoji, их можно убрать без риска для контента. Речь не про сами смайлы в тексте, а про служебные скрипты и фильтры, которые WordPress добавляет на фронтенд и в админку. На небольших сайтах это мелочь, но на проектах с жесткой оптимизацией каждый лишний запрос и лишний обработчик лучше контролировать.
Что именно отключаем и где это видно
WordPress подгружает поддержку emoji через набор хуков и скриптов. Обычно это проявляется так:
- в HTML страницы появляется
wp-emoji-release.min.js; - в
<head>добавляются inline-скрипты для проверки поддержки emoji; - в админке и на фронтенде есть лишняя логика, которая вам не нужна, если сайт работает только с обычным текстом.
Если вы видите эти элементы в исходном коде, отключение имеет смысл. Но сначала проверьте, не завязаны ли на emoji ваши редакционные шаблоны, комментарии или интеграции. На большинстве сайтов это не требуется.
Диагностика: как понять, что проблема есть
Откройте исходный код страницы и найдите emoji. Быстрее всего это сделать через DevTools или просмотр HTML. Ищите такие признаки:
wp-emoji-release.min.jsв списке подключенных файлов;- функции вроде
wpemojiSettingsв inline-коде; - лишние запросы к
wp-includes/js/wp-emoji-release.min.js.
Если сайт уже использует агрессивный кеш или минификацию, проверьте еще и итоговый HTML после сборки. Иногда скрипт удален из шаблона, но остается в кеше или в объединенном файле.
Что лучше: код, плагин или настройка темы
Для отключения emoji есть три рабочих пути. Выбор зависит от того, есть ли у вас доступ к теме и нужен ли быстрый способ без правки кода.
| Способ | Когда подходит | Минус |
|---|---|---|
Код в functions.php или mu-plugin | Нужен точечный контроль и предсказуемое поведение | Нужно аккуратно обновлять тему |
| Плагин оптимизации | Нужно отключить не только emoji, но и другие лишние элементы | Добавляется еще один слой настроек |
| Настройка темы | Тема уже содержит опцию отключения | Не у всех тем она есть |
Если задача узкая, я бы выбирал код. Если вы уже используете плагин для чистки head и отключения лишних функций, логично сделать это там же, чтобы не плодить отдельные правки.
Пошаговое решение через код
Самый надежный вариант — убрать emoji-скрипты через стандартные хуки WordPress. Добавьте код в 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 и письмах. Для большинства сайтов этого достаточно.
Если нужен mu-plugin
Когда сайт обслуживают несколько человек, удобнее вынести правку в отдельный mu-plugin. Тогда она не потеряется из-за смены темы и не зависит от child theme.
<?php
/**
* Plugin Name: Disable Emoji Support
*/
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' );
} );Файл положите в wp-content/mu-plugins/disable-emoji.php. Если папки mu-plugins нет, создайте ее вручную.
Как отключить emoji через плагин
Если вы не хотите править код, используйте плагин, который умеет чистить служебные элементы WordPress. Например, в Clearfy Pro есть функции для отключения лишних скриптов и оптимизации head. Это удобно, если вы параллельно убираете другие «хвосты» вроде эмодзи, oEmbed или лишних мета-тегов. Подробности смотрите на странице плагина: Clearfy Pro.
Плюс плагина в том, что вы видите все отключаемые функции в одном интерфейсе. Минус — нужно следить, чтобы одна и та же оптимизация не дублировалась в коде и в настройках плагина.
Проверка результата после внедрения
После изменения откройте страницу сайта в режиме инкогнито и проверьте исходный код. Вам нужно убедиться, что:
- в HTML больше нет
wp-emoji-release.min.js; - в
<head>не выводятся emoji-скрипты; - в админке не осталось лишних подключений, если вы отключали и ее;
- RSS и письма продолжают работать без ошибок.
Дополнительно можно проверить через консоль браузера: вкладка Network должна показывать, что файл emoji не загружается. Если у вас есть кеш-плагин или CDN, очистите кеш перед проверкой.
Что считать успешным результатом
Решение можно считать рабочим, если исходный код страницы стал короче, а в списке запросов исчезли emoji-ресурсы. При этом редактор, комментарии и отправка писем не должны выдавать ошибок. Если сайт использует SMTP или внешние сервисы рассылки, проверьте несколько тестовых писем отдельно.
Частые ошибки и как их исправить
- Код добавили в родительскую тему. После обновления все исчезнет. Перенесите правку в child theme или mu-plugin.
- Отключили emoji только на фронтенде. В админке скрипты остались, и оптимизация неполная. Уберите и
admin_print_scripts, иadmin_print_styles. - Используете плагин и код одновременно. Иногда это не ломает сайт, но усложняет диагностику. Оставьте один источник правды.
- Проверили только главную страницу. На архиве, в записи и в админке поведение может отличаться. Тестируйте несколько типов страниц.
- Не очистили кеш. Старый HTML продолжает показывать emoji-скрипт, хотя код уже удален. Сначала сбросьте кеш, потом проверяйте.
Безопасность и производительность: что важно не упустить
Отключение emoji само по себе безопасно, если вы не трогаете лишние хуки. Но есть два практических правила. Первое: не вставляйте подобные правки в случайные сниппеты без контроля версий. Второе: не удаляйте скрипты через шаблонный поиск по HTML, если можно использовать штатные хуки WordPress. Хуки переживают обновления лучше и не ломают разметку.
Если вы уже чистите сайт от лишних подключений, делайте это поэтапно: сначала emoji, потом oEmbed, потом ненужные эмодзи-стили и только после этого сравнивайте итоговый HTML и количество запросов. Так проще понять, какая именно правка дала эффект и не вызвала побочных проблем.
Для сайтов с высокой нагрузкой полезно держать такие изменения в одном техническом слое: mu-plugin, конфиг оптимизации или системный плагин. Тогда при отладке не придется искать, где именно спрятана отключающая логика.