Emoji в WordPress редко нужны на большинстве сайтов, но по умолчанию ядро добавляет для них проверку поддержки и подключает дополнительные скрипты. На небольшом проекте это не критично, но если вы чистите фронтенд, сокращаете количество запросов и приводите код к более предсказуемому виду, отключение emoji — нормальная техническая задача.
Ниже разберём, что именно отключать, чем отличается безопасный способ от грубого удаления скриптов, и как проверить, что после правки не пострадали редактор, комментарии и вывод на сайте.
Что именно делает WordPress с emoji
WordPress добавляет на страницу небольшой скрипт, который проверяет поддержку emoji в браузере и, если нужно, подгружает вспомогательные ресурсы. Это касается и фронтенда, и админки. Визуально пользователь чаще всего ничего не замечает, но в исходном коде появляются дополнительные подключения и фильтры.
Если сайт не использует emoji как часть контента и вы не хотите держать этот механизм ради совместимости со старыми браузерами, его можно отключить. Важно не путать это с удалением самих символов emoji из текста — речь только о встроенной поддержке WordPress.
Диагностика: как понять, что emoji действительно подключены
Перед изменениями стоит проверить, есть ли у вас этот код на странице. Откройте исходный HTML и найдите упоминания wp-emoji-release.min.js или фильтры, связанные с emoji. Если используете DevTools, посмотрите вкладку Network: на некоторых установках будет отдельный запрос к скрипту emoji.
Ещё один практический признак — в view-source: страницы можно увидеть инлайновый скрипт, который WordPress вставляет в <head>. Если сайт уже сильно оптимизирован плагином кеша, этот код всё равно может оставаться, пока его не отключат на уровне ядра.
- Проверьте исходный код главной страницы и нескольких внутренних страниц.
- Посмотрите, есть ли запрос к
wp-emoji-release.min.js. - Убедитесь, что отключение не конфликтует с плагинами, которые сами вставляют emoji-обработку.
Пошаговое решение: отключаем emoji через functions.php или мини-плагин
Самый надёжный способ — снять стандартные действия WordPress через remove_action и отключить фильтры, которые добавляют emoji-скрипты в HTML и email. Это лучше, чем вручную вырезать код из шаблона, потому что правка остаётся на уровне логики, а не конкретной темы.
Вариант 1: код в functions.php
Если у вас есть дочерняя тема, добавьте код туда. Для production-проекта это предпочтительнее, чем править родительскую тему.
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' );
remove_filter( 'the_content', 'wp_staticize_emoji' );
remove_filter( 'comment_text', 'wp_staticize_emoji' );
} );Этот вариант обычно достаточно безопасен для обычного сайта. Он не ломает ввод emoji в контенте, а только убирает встроенную обвязку WordPress.
Вариант 2: отдельный мини-плагин
Если вы не хотите привязываться к теме, создайте маленький плагин. Это удобно, когда на сайте часто меняют шаблон или есть несколько сред — staging, production, локальная копия.
<?php
/**
* Plugin Name: Disable WordPress Emoji
* Description: Отключает встроенную поддержку emoji в WordPress.
* Version: 1.0.0
*/
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' );
remove_filter( 'the_content', 'wp_staticize_emoji' );
remove_filter( 'comment_text', 'wp_staticize_emoji' );
} );Такой плагин проще отключить, если позже понадобится вернуть стандартное поведение без отката темы.
Когда лучше использовать плагин, а когда код
Если у вас уже стоит плагин для технической чистки сайта, иногда удобнее собрать такие правки в одном месте. Например, Clearfy Pro умеет закрывать типовые лишние элементы WordPress и помогает держать подобные настройки в одном интерфейсе. Но если задача точечная и вы контролируете код, мини-плагин или дочерняя тема обычно прозрачнее.
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в дочерней теме | Быстро, без лишних зависимостей | Слетит при смене темы |
| Мини-плагин | Не зависит от темы, легко переносить | Нужно следить за активацией |
| Технический плагин | Удобно для набора оптимизаций | Может быть избыточен для одной задачи |
Проверка результата после внедрения
После добавления кода не ограничивайтесь визуальной проверкой страницы. Нужно убедиться, что WordPress действительно перестал выводить emoji-скрипты и стили.
- Очистите кеш сайта и, если есть, кеш CDN.
- Откройте страницу в режиме инкогнито.
- Посмотрите исходный код и убедитесь, что
wp-emoji-release.min.jsбольше не выводится. - Проверьте админку: редактор записей, комментарии и экран настроек должны работать как обычно.
- Если используете плагин оптимизации, сравните HTML до и после, чтобы понять, не дублирует ли он отключение emoji сам.
Для быстрой проверки можно открыть DevTools и выполнить поиск по HTML страницы по строке emoji. Если отключение сработало, стандартные подключения WordPress исчезнут, а в Network не будет отдельного запроса к emoji-скрипту.
Частые ошибки и как их исправить
Удалили код из шаблона, а он всё равно появляется
Это типичная ситуация, если правили не тот файл. Emoji подключаются через хуки ядра, поэтому вырезать их нужно через remove_action и remove_filter, а не поиском по шаблону.
Отключили emoji, но сломали админку
Чаще всего проблема в том, что код вставили слишком рано или с синтаксической ошибкой. Проверьте, что код выполняется после загрузки WordPress и что в файле нет лишних символов до <?php или после закрывающего тега.
Скрипт всё ещё виден из-за плагина оптимизации
Некоторые плагины кеша и оптимизации могут повторно добавлять или объединять скрипты. В таком случае отключение emoji на уровне ядра не даст полного эффекта, пока не проверите настройки самого плагина.
Ожидали, что emoji исчезнут из контента
Этот код не удаляет символы из записей. Если в тексте уже есть emoji, они останутся как обычные символы Unicode. Убирается только встроенная служебная обвязка WordPress.
Что ещё можно почистить рядом с emoji
Если вы уже занимаетесь технической чисткой сайта, имеет смысл посмотреть и на другие лишние подключения: эмбедды, генератор версии, лишние стили плагинов, неиспользуемые виджеты. Но не отключайте всё подряд без проверки. У WordPress и плагинов есть зависимости, которые легко сломать одной «оптимизацией».
Практичный подход такой: сначала фиксируете конкретную проблему, потом проверяете исходный код и только после этого убираете лишнее. Для emoji это особенно удобно, потому что изменение небольшое, а эффект легко проверить вручную.
Безопасность и производительность: на что смотреть после правки
Само отключение emoji не несёт рисков для безопасности, но любая правка через functions.php требует аккуратности. Если сайт без дочерней темы, лучше использовать мини-плагин: так вы не потеряете изменения при обновлении темы.
На производительность это влияет умеренно, но в сумме с другими мелкими оптимизациями даёт более чистый фронтенд. Главное — не превращать отключение emoji в часть большого пакета «ускорения», где без тестов удаляют всё подряд. Любая оптимизация должна быть обратимой и проверяемой.