Встроенная поддержка Emoji в WordPress часто остается включенной по умолчанию, хотя на большинстве сайтов она не нужна. Проблема не в самих смайлах, а в том, что ядро может добавлять лишние скрипты и фильтры даже там, где они не используются. На небольшом сайте это не катастрофа, но если вы чистите фронтенд, сокращаете количество запросов и убираете лишние зависимости, Emoji — один из самых простых кандидатов на отключение.
Ниже разберем, что именно отключать, как не сломать редактор и комментарии, чем отличается решение через код от плагина, и как проверить результат без гадания по исходнику страницы.
Что именно грузит WordPress и почему это вообще мешает
В старых и частично актуальных конфигурациях WordPress может подключать wp-emoji-release.min.js и вставлять дополнительные inline-скрипты для подмены символов. На современных браузерах это обычно не нужно: они и так нормально отображают Unicode-эмодзи. Если сайт не использует старые браузеры и не завязан на специфическую обработку Emoji, этот функционал можно убрать.
Важно понимать границу: мы не отключаем поддержку символов как таковых. Контент с Emoji продолжит отображаться, если браузер пользователя их поддерживает. Мы убираем именно лишнюю логику WordPress по их обработке.
Диагностика: как понять, что Emoji реально подключены
Перед правкой не стоит действовать вслепую. Сначала проверьте, есть ли на фронтенде следы emoji-скрипта.
Проверка в исходнике страницы
Откройте любую страницу сайта и посмотрите исходный код. Ищите:
wp-emoji-release.min.js- inline-скрипты с
wpemojiSettings - подключение через
wp_headилиwp_print_styles
Если используете DevTools, откройте вкладку Network и обновите страницу. Наличие отдельного JS-файла с emoji-логикой — явный сигнал, что отключение имеет смысл.
Когда отключать не стоит
Есть редкие случаи, когда лучше не трогать этот механизм:
- сайт рассчитан на очень старые браузеры;
- есть кастомная интеграция, которая явно использует emoji-скрипты WordPress;
- вы не уверены, что тема или плагин не завязаны на фильтры, связанные с emoji.
Если сайт обычный, с актуальной темой и без экзотики, отключение безопасно.
Пошаговое решение через код
Самый чистый вариант — добавить код в functions.php дочерней темы или в свой мини-плагин. Это лучше, чем править ядро или вставлять случайные сниппеты в произвольные места.
Код для отключения 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' );
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' );
} );Этот вариант убирает фронтенд- и админские подключения, а также фильтры, которые WordPress использует для статической подстановки Emoji в контенте и письмах.
Если нужен более аккуратный вариант для сайта с плагинами
Иногда лучше не трогать админку, если вы не уверены, как именно у вас настроены редактор и уведомления. Тогда можно ограничиться фронтендом:
add_action( 'init', function () {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content', 'wp_staticize_emoji' );
remove_filter( 'comment_text', 'wp_staticize_emoji' );
} );Такой подход оставляет меньше шансов задеть внутренние процессы в админке, но на практике для большинства сайтов полное отключение тоже работает нормально.
Альтернатива: отключить через плагин
Если вы не хотите держать код в теме, используйте плагин для технической чистки сайта. Это удобно, когда на проекте несколько администраторов и вам нужно централизованно управлять оптимизациями без правки файлов темы. Например, в Clearfy Pro есть набор настроек для отключения лишних функций WordPress, включая emoji-обработку, если вам нужен интерфейс вместо кода.
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в теме или мини-плагине | Прозрачно, быстро, без лишних зависимостей | Нужно следить за обновлениями и местом хранения кода |
| Плагин для оптимизации | Удобно для админов, можно управлять без разработчика | Еще одна зависимость, часть настроек может быть избыточной |
Как проверить, что отключение сработало
После внедрения не ограничивайтесь визуальной проверкой страницы. Нужна именно техническая проверка.
- Откройте исходный код и убедитесь, что
wp-emoji-release.min.jsисчез. - Проверьте, что в
<head>больше нет emoji-detection script. - Обновите страницу в режиме инкогнито и посмотрите Network: лишний JS-файл не должен загружаться.
- Откройте запись с Emoji в контенте и убедитесь, что символы отображаются нормально.
- Проверьте комментарии и письма, если вы отключали фильтры и там тоже используются эмодзи.
Если после правки на сайте ничего не изменилось, почти всегда причина одна из трех: код добавлен не в тот файл, кэш не очищен или тема/плагин переопределяет поведение позже по приоритету.
Частые ошибки и как их исправить
Код вставили в родительскую тему
После обновления темы изменения пропадут. Для таких правок используйте дочернюю тему или отдельный мини-плагин. Это особенно важно, если вы уже ведете на сайте другие технические доработки.
Отключили только один хук
Иногда убирают только print_emoji_detection_script, но забывают про стили или фильтры для контента и RSS. В результате часть следов остается, а выгода от правки получается неполной.
Не очистили кэш
Если на сайте стоит серверный кэш, плагин кэширования или CDN, старый HTML может показываться еще какое-то время. После изменения конфигурации очистите:
- кэш плагина;
- серверный кэш, если он есть;
- CDN-кэш;
- браузерный кэш для проверки.
Смешали оптимизацию с другими экспериментами
Если вы одновременно отключаете Emoji, jQuery Migrate, embeds и еще десяток функций, потом трудно понять, что именно сломало верстку или админку. Меняйте по одному блоку и проверяйте результат после каждого шага.
Практические советы по безопасности и производительности
Само по себе отключение Emoji не делает сайт безопаснее, но это хороший повод пройтись по остальным лишним подключениям в WordPress. Если вы уже чистите фронтенд, проверьте, не тянет ли тема:
- неиспользуемые иконки;
- лишние шрифты;
- встроенные библиотеки, которые дублируются плагинами;
- скрипты, подключенные на всех страницах без необходимости.
Не удаляйте системные функции наугад. Любая оптимизация должна быть обратимой: храните изменения в одном месте, чтобы быстро откатить их после обновления темы или плагина.
Что должно получиться в итоге
После корректного отключения Emoji на сайте не должно быть отдельного emoji-скрипта, а HTML и визуальное отображение контента должны остаться без изменений. Если у вас обычный современный сайт на WordPress, это одна из тех правок, которые можно сделать один раз и больше не возвращаться к ним, пока не поменяется стек или требования к совместимости.