В WordPress поддержка emoji включена по умолчанию уже много лет. На обычном сайте это редко заметно, но на проектах с жёсткой оптимизацией фронтенда лишний inline-скрипт и дополнительные подключения могут быть просто не нужны. Если задача — вычистить технический шум, а не менять поведение редактора, emoji можно отключить без риска для контента.
Ниже — рабочий сценарий: что именно отключается, как понять, что это действительно лишнее, и как сделать это через код или плагин без поломки админки.
Когда emoji в WordPress действительно мешают
Проблема обычно не в самих эмодзи, а в том, что WordPress добавляет проверку их поддержки на фронтенде и в админке. Это выражается в дополнительных подключениях и небольшом количестве JS-логики, которая на большинстве современных браузеров уже не нужна.
Если вы видите цель в минимизации запросов и упрощении head, отключение emoji имеет смысл в таких случаях:
- сайт уже работает только на современных браузерах;
- вы чистите фронтенд от всего необязательного;
- нужно уменьшить количество inline-скриптов в шапке;
- вы ведёте техническую оптимизацию вместе с кешированием и минификацией;
- на проекте есть строгие требования к CSP и контролю стороннего JS.
Что именно отключается
WordPress использует набор функций, связанных с emoji, в том числе вывод проверки поддержки в head и загрузку скрипта в админке. При отключении вы не ломаете возможность вставлять emoji как символы Unicode — вы убираете только штатную обвязку WordPress.
Диагностика: как понять, что emoji-скрипт реально загружается
Перед правкой лучше проверить исходный код страницы и список подключённых ассетов. Это занимает минуту и помогает не гадать.
- Откройте главную страницу сайта в браузере.
- Посмотрите исходный код страницы.
- Найдите фрагменты, связанные с emoji: inline-скрипт
wp-emoji-release.min.jsили вызовы, которые добавляют проверку поддержки. - Если используете инструменты разработчика, проверьте вкладку Network и фильтр по
emojiилиwp-emoji.
На части сайтов вы увидите не отдельный файл, а именно inline-скрипт в head. Это тоже повод убрать его, если он не нужен.
Как отключить emoji в WordPress через код
Самый предсказуемый способ — добавить код в 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' );
} );Этот набор убирает и фронтенд, и админку, и фильтры, которые WordPress применяет к RSS и письмам. Если вам нужно отключить только фронтенд, можно оставить часть строк, но на практике чаще убирают всё целиком.
Вариант через mu-plugin
Если не хотите зависеть от темы, создайте файл, например wp-content/mu-plugins/disable-emoji.php:
<?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 удобен тем, что он не выключится после смены темы и не потеряется при обновлении.
Что выбрать: код или плагин
Если у вас уже есть плагин для технической чистки, отключение emoji можно сделать там. Но если нужен точечный и прозрачный контроль, код обычно проще сопровождать.
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в теме или mu-plugin | Минимум зависимостей, понятно что отключено | Нужно аккуратно вносить изменения |
| Плагин для оптимизации | Быстро включить без правки файлов | Может отключать больше, чем нужно |
| Не трогать emoji | Ничего не ломаете и не настраиваете | Лишние элементы остаются в head и админке |
Если на сайте уже используется набор для технической очистки вроде Clearfy Pro, проверьте, нет ли там отдельной опции отключения emoji. Это удобнее, чем дублировать логику в теме, но важно не включать одно и то же в двух местах сразу.
Пошаговое решение без лишних рисков
- Сделайте резервную копию файлов или хотя бы подготовьте быстрый откат.
- Выберите место для кода: mu-plugin предпочтительнее, чем правка родительской темы.
- Добавьте код отключения emoji.
- Очистите кеш сайта, серверный кеш и CDN, если он есть.
- Проверьте исходный код страницы и админку.
Если на сайте есть object cache или агрессивная HTML-минификация, после изменения обязательно сбросьте кеш. Иначе вы можете смотреть на старую версию страницы и решить, что код не сработал.
Как проверить результат после внедрения
Проверка должна быть не на глаз, а по конкретным признакам.
- В исходном коде страницы больше нет inline-скрипта emoji в head.
- Файл
wp-emoji-release.min.jsне загружается в Network. - В админке не подключается отдельная emoji-обвязка WordPress.
- RSS и письма не содержат автоматической статической замены emoji, если вы отключили и фильтры.
Если хотите проверить программно, откройте страницу и выполните поиск по исходнику на emoji. Для более строгой проверки можно временно включить логирование запросов через инструменты разработчика и убедиться, что лишний JS не уходит в браузер.
Частые ошибки и как их исправить
Код добавили в неправильное место
Если вставить код в файл, который не загружается на фронтенде, ничего не изменится. Для темы используйте functions.php активной дочерней темы. Для надёжности — mu-plugin.
Проверяют только главную страницу
Иногда оптимизация видна на обычных страницах, но не на шаблонах с другим набором хуков. Проверьте хотя бы запись, страницу и архив.
Не сбросили кеш
Это самая частая причина ложного вывода. После правки очистите кеш плагина, сервера и CDN, иначе старый head останется в выдаче.
Отключили не только emoji, но и нужные фильтры
Если вы используете автоматическую статическую замену emoji в RSS или письмах, не удаляйте фильтры без понимания последствий. На большинстве сайтов это не критично, но если рассылка или фиды завязаны на старое поведение, лучше протестировать отдельно.
Практические замечания по безопасности и производительности
Отключение emoji — это не «ускоритель» в широком смысле. Эффект обычно небольшой, но в технической чистке сайта важна не только экономия байтов, а предсказуемость фронтенда. Чем меньше автоматических вставок в head, тем проще контролировать CSP, минификацию и порядок загрузки скриптов.
Если вы уже убираете лишние элементы из WordPress, делайте это последовательно: сначала отключайте то, что точно не используется, потом проверяйте совместимость с темой, плагинами кеша и редактором. Не стоит собирать набор из нескольких плагинов, которые все по-своему чистят head: так проще получить конфликт, чем выигрыш.
Для сайтов, где важна именно системная техническая очистка, удобнее держать такие настройки в одном месте. Это снижает шанс, что через полгода кто-то включит обратно часть логики в теме и вы снова увидите лишние вставки в исходнике.