WordPress до сих пор по умолчанию подгружает небольшой набор скриптов и фильтров для поддержки emoji. На современном сайте это часто лишняя нагрузка: дополнительные запросы, лишний код в <head> и на фронтенде, а иногда — конфликт с политиками кеширования и оптимизации. Если emoji на сайте не используются как функциональность, их можно отключить без установки отдельного плагина.
Ниже разберём, что именно отключать, как проверить эффект и где чаще всего ломают решение.
Когда отключение emoji действительно имеет смысл
Речь не про «ускорить сайт на магические проценты», а про чистку лишнего системного кода. На практике это полезно, если вы:
- собираете сайт с упором на минимальный фронтенд;
- используете строгую оптимизацию CSS/JS и хотите убрать ненужные inline- и внешние подключения;
- видите в исходнике страницы
wp-emoji-release.min.jsи хотите понять, можно ли без него обойтись; - поддерживаете корпоративный сайт, где emoji не нужны как часть контента.
Если у вас редакторы, которые активно вставляют emoji в тексты, отключение не сломает сам контент. Оно убирает только старую подгрузку поддержки emoji со стороны WordPress, а не символы в базе данных.
Диагностика: что именно грузит WordPress
Перед правкой проверьте, есть ли на сайте типичные следы emoji-поддержки. Откройте исходный код страницы и найдите:
wp-emoji-release.min.js;- inline-скрипт с проверкой поддержки emoji;
- дополнительные фильтры в
wp_headиadmin_print_scripts.
Если используете инструменты разработчика в браузере, посмотрите вкладку Network. На части сайтов скрипт emoji может не бросаться в глаза из-за кеша, но в HTML он всё равно присутствует.
Ещё один практический признак: если вы уже чистите сайт через оптимизатор и видите, что он пытается «удалить emoji» отдельной настройкой, значит функциональность действительно присутствует и её можно убрать на уровне темы или мини-плагина.
Что отключать: не только скрипт, но и фильтры
Одна ошибка — убрать только один файл и оставить остальную обвязку. Правильнее отключить и скрипт, и связанные с ним фильтры для фронтенда, админки, RSS и email.
Для этого достаточно добавить код в functions.php дочерней темы или, что надёжнее, в небольшой mu-plugin.
Вариант через functions.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' );
} );Этот вариант рабочий, но у него есть минус: если тема или плагин поздно добавляют свои действия, вы можете не попасть в нужный момент. На практике чаще надёжнее использовать after_setup_theme или mu-plugin, если сайт большой и с кучей расширений.
Вариант через mu-plugin
Создайте файл, например wp-content/mu-plugins/disable-emoji.php. Если папки mu-plugins нет, её нужно создать вручную.
<?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 удобнее тем, что он не зависит от активной темы и не исчезнет после смены шаблона.
Сравнение подходов: плагин, код, оптимизатор
| Подход | Что даёт | Минус |
|---|---|---|
| Код в теме или mu-plugin | Точный контроль, без лишних зависимостей | Нужно не ошибиться с местом и хуком |
| Оптимизатор/плагин чистки | Быстро включить без правки файлов | Ещё один плагин в стек, возможны пересечения с кешем |
| Ничего не делать | Ноль риска для совместимости | Остаётся лишний системный код |
Если у вас уже стоит инструмент для технической чистки, например Clearfy Pro, такую задачу иногда удобнее закрыть там, а не плодить отдельные мини-решения. Но если нужен контроль на уровне кода, ручной вариант надёжнее и прозрачнее.
Пошаговое решение без плагина
- Сделайте резервную копию файлов темы или подготовьте staging-копию сайта.
- Выберите место для кода: дочерняя тема или
mu-plugins. - Добавьте код отключения emoji.
- Очистите кеш страницы, серверный кеш и CDN, если он есть.
- Проверьте исходник страницы и админку.
Если сайт использует агрессивную оптимизацию JS, после правки лучше сбросить и минификацию, чтобы старые объединённые файлы не скрывали результат проверки.
Как проверить, что решение сработало
Проверка должна быть не «на глаз», а по факту в коде страницы.
- Откройте главную страницу в режиме просмотра исходника.
- Найдите
wp-emoji-release.min.js— его быть не должно. - Проверьте, исчезли ли emoji-стили и inline-скрипт в
<head>. - Зайдите в админку и убедитесь, что редактор и комментарии работают как раньше.
- Если сайт отправляет письма через WordPress, проверьте, что письма приходят без визуальных артефактов.
Для более точной проверки можно открыть DevTools → Network и обновить страницу с отключённым кешем браузера. Если запросов к emoji-скрипту нет, задача решена.
Частые ошибки и как их исправить
Код добавили, но скрипт остался
Обычно это значит, что код вставили слишком поздно или не туда. Проверьте, что используете init или after_setup_theme, а не код внутри шаблона страницы. Если тема сама подключает похожие действия, убедитесь, что вы не удаляете несуществующий хук.
Проверяли только страницу, но не админку
WordPress может грузить emoji-обвязку и в админке. Это не критично для фронтенда, но если вы хотите убрать её полностью, нужно отключать и admin_print_scripts, и admin_print_styles.
Сломали письма или RSS
Такое бывает, если удалили только фронтенд-часть и оставили фильтры для контента, комментариев и email в странном состоянии. Используйте полный набор remove_filter, а не выборочные правки без понимания цепочки.
Поставили плагин, который делает то же самое
Если у вас уже есть плагин для технической чистки, не дублируйте функциональность вручную без необходимости. Два решения на одну задачу часто создают путаницу: одно отключает, другое возвращает обратно через фильтр.
Что ещё можно убрать вместе с emoji
Если вы уже занимаетесь технической чисткой сайта, имеет смысл посмотреть на соседние системные вещи: лишние эмодзи-скрипты, встроенные oEmbed-обвязки, неиспользуемые стили редактора на фронтенде, дубли архивов и мусорные страницы поиска. Но каждую такую правку нужно проверять отдельно, а не «чистить всё подряд».
Для сайтов, где важна аккуратная техническая база, полезно держать под рукой список изменений и после каждого шага фиксировать, что именно отключили и как это проверили. Это сильно упрощает отладку, если позже что-то начнёт конфликтовать с темой или плагином.