Если на сайте важна чистота фронтенда, emoji-скрипты WordPress обычно попадают в список лишних ресурсов первыми. Это не критическая проблема, но на проектах с аккуратной оптимизацией каждый внешний или встроенный запрос приходится объяснять. Чаще всего отключают не сами emoji как символы, а набор служебных подключений, который WordPress добавляет в <head> и в админку.
Ниже — рабочий сценарий: как отключить emoji через код, где это уместно, как проверить результат и какие ошибки встречаются чаще всего.
Когда отключение emoji действительно имеет смысл
Эта настройка полезна, если вы оптимизируете фронтенд и хотите убрать лишние действия WordPress на каждой странице. В современных браузерах emoji отображаются без помощи старого JS-полифила, поэтому на большинстве сайтов это безопасное упрощение. Но если у вас есть старые корпоративные браузеры, специфичные редакционные интерфейсы или сторонний плагин, который неожиданно рассчитывает на эти скрипты, отключать нужно аккуратно.
Что именно убирается
WordPress подключает несколько вещей, связанных с emoji: inline-скрипт в head, обработчики в админке и email-части, а также фильтры, которые подменяют символы. На фронтенде это обычно выражается в лишнем JS в исходном коде страницы и в дополнительной работе браузера.
Диагностика: как понять, что emoji-скрипты у вас вообще есть
Перед правкой проверьте исходник страницы и список подключенных ассетов. Не ориентируйтесь только на визуальный просмотр страницы — emoji-логика часто видна именно в HTML-коде.
- Откройте любую публичную страницу и посмотрите исходный код.
- Найдите
wp-emoji-release.min.jsили inline-скрипт, связанный с emoji. - Проверьте, нет ли этого же кода в админке, если вы редактируете сайт через кастомные панели или редактор.
- Сравните количество запросов до и после правки в DevTools или WebPageTest.
Если скрипт уже убирается плагином оптимизации, не дублируйте отключение в теме без необходимости. Два решения на одну задачу часто создают путаницу при отладке.
Пошаговое решение через functions.php
Самый понятный способ — убрать emoji через functions.php дочерней темы или через небольшой mu-plugin. Для продакшена mu-plugin обычно надежнее: он не зависит от смены темы.
<?php
/**
* Отключает emoji-скрипты и фильтры WordPress.
*/
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' );
} );Этот код отключает стандартные подключения WordPress. Он не трогает сами символы emoji в контенте — они продолжат отображаться в современных браузерах и приложениях.
Если нужен более надежный вариант для сайта с несколькими темами
Создайте файл, например wp-content/mu-plugins/disable-emoji.php. Такой подход удобен, если у вас есть staging, несколько окружений или вы часто меняете тему.
<?php
/**
* Plugin Name: Disable 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' );
} );Сравнение подходов: код, плагин, ничего не делать
| Подход | Плюсы | Минусы | Когда выбирать |
|---|---|---|---|
| Код в mu-plugin | Стабильно, не зависит от темы | Нужно один раз добавить файл | Продакшен, несколько окружений |
| Код в functions.php | Быстро, без плагинов | Слетит при смене темы | Небольшой сайт, вы контролируете тему |
| Ничего не делать | Ноль риска для совместимости | Лишний служебный код остается | Если оптимизация не приоритет |
Проверка результата после внедрения
После правки важно не ограничиваться открытием страницы в браузере. Проверьте именно то, что вы отключали.
- Откройте исходный код страницы и найдите
wp-emoji-release.min.js. - Проверьте, исчез ли inline-код emoji из
<head>. - Сравните список запросов в DevTools до и после изменения.
- Посмотрите админку: если вы отключали только фронтенд, в панели ничего критичного не должно сломаться.
- Если используете кеш-плагин, очистите кеш и проверьте страницу в режиме инкогнито.
Хороший практический критерий — в исходнике больше не должно быть ссылок на emoji-скрипт WordPress, а визуально контент с emoji должен отображаться без искажений.
Частые ошибки и как их исправить
Код добавили не туда
Если вставить сниппет в файл темы, который не загружается на всех страницах, отключение сработает частично. Для стабильности используйте functions.php активной дочерней темы или mu-plugin.
Отключили слишком рано или слишком поздно
Хуки имеют значение. Если код выполняется не на init, часть стандартных действий WordPress может уже быть зарегистрирована или, наоборот, еще не доступна для удаления. В таком случае отключение не сработает.
Проверили только главную страницу
На некоторых шаблонах подключение ресурсов отличается. Проверьте записи, страницы, архивы и админку, если вы меняли код глобально.
Смешали код и плагин оптимизации
Если плагин уже убирает emoji, а вы добавили тот же сниппет вручную, это обычно не ломает сайт, но усложняет поддержку. Через месяц будет трудно понять, какой именно слой отвечает за результат.
Что еще стоит проверить вместе с emoji-оптимизацией
Отключение emoji имеет смысл только как часть общей чистки фронтенда. Если вы уже смотрите на исходный код, заодно проверьте, не тянет ли тема лишние шрифты, неиспользуемые иконки или тяжелые скрипты, которые можно отложить. На проектах с аккуратной технической базой такие мелочи дают больше пользы, чем точечная борьба с одним ресурсом.
Если нужен более широкий набор настроек для чистки WordPress, иногда удобнее собрать их в одном инструменте, а не держать россыпь разрозненных сниппетов. Например, в Clearfy Pro есть функции для удаления части служебного кода и SEO-дублей, но применять такие решения стоит только после проверки, что они не конфликтуют с вашей темой и SEO-плагином: Clearfy Pro.
Когда лучше не отключать emoji вручную
Если сайт обслуживает несколько редакторов, а изменения вносятся не только разработчиком, лучше сначала проверить, не решает ли задачу уже установленный плагин оптимизации. В крупных проектах ручной код без документации часто забывают, а потом его сложно найти при отладке. В таком случае безопаснее держать отключение в отдельном mu-plugin с коротким комментарием и записью в changelog проекта.
Если после правки emoji исчезли из контента или в письмах, значит вы задели не только фронтенд-часть. Вернитесь к исходному сниппету и проверьте, не удалили ли вы лишние фильтры или не добавили ли сторонний код, который меняет форматирование текста.