Как отключить emoji в WordPress через код и плагин

Если на сайте 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, конфиг оптимизации или системный плагин. Тогда при отладке не придется искать, где именно спрятана отключающая логика.

⭐⭐⭐⭐⭐