В WordPress поддержка emoji включена по умолчанию и тянет за собой лишние стили, скрипты и проверки. На небольшом сайте это не критично, но в технической оптимизации такие мелочи быстро складываются: лишний запрос в <head>, дополнительный JavaScript, ненужная нагрузка в админке и на фронтенде. Если задача — убрать именно emoji-обвязку, а не ломать ввод символов в контенте, это можно сделать аккуратно.
Ниже разберём, что именно отключать, как проверить, что всё сработало, и где чаще всего допускают ошибки. Сценарий подходит для обычного сайта на WordPress, где не нужен отдельный функционал для emoji-подмены в старых браузерах.
Что именно отключаем и зачем
В WordPress emoji-поддержка состоит не из одного файла. Обычно речь идёт о двух вещах: скрипте wp-emoji-release.min.js и фильтрах, которые добавляют проверку emoji в контент, комментарии и email. Если отключить только скрипт, часть лишней логики всё равно останется. Если убрать всё без разбора, можно случайно задеть совместимость плагинов или собственные вставки в теме.
Поэтому безопаснее идти от задачи: убрать фронтенд-обвязку, при необходимости — отключить и в админке, но не трогать саму возможность хранить emoji в базе данных. WordPress и так нормально сохраняет Unicode-символы в современных окружениях.
Диагностика: как понять, что emoji-скрипты реально загружаются
Перед изменениями стоит проверить, есть ли вообще что отключать. На части сайтов оптимизаторы уже убрали emoji, а проблема сидит в другом месте. Самый простой способ — открыть исходный код страницы и поискать wp-emoji-release.min.js или связанные inline-скрипты.
Если используете DevTools, откройте вкладку Network и обновите страницу. В списке запросов ищите:
wp-emoji-release.min.js;- inline-скрипт с проверкой canvas для emoji;
- лишние вызовы в
wp_headиadmin_print_scripts.
Ещё один практичный признак — сравнение HTML до и после отключения. Если в <head> исчезли ссылки на emoji-скрипт и inline-блоки, значит фильтры сняты правильно.
Пошаговое решение через functions.php или мини-плагин
Надёжнее всего вынести код в мини-плагин или в functions.php дочерней темы. Если тема обновляется часто, мини-плагин безопаснее: настройка не потеряется при апдейте.
Вариант 1: убрать emoji-скрипты на фронтенде и в админке
Этот вариант подходит, если вы хотите полностью отключить emoji-обвязку WordPress на сайте и в панели управления.
<?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' );
remove_filter( 'the_content', 'wp_staticize_emoji' );
remove_filter( 'comment_text', 'wp_staticize_emoji' );
} );Этот код не трогает хранение символов в базе. Он убирает именно служебные проверки и стили, которые WordPress добавляет автоматически.
Вариант 2: отключить emoji только на фронтенде
Если вы не хотите менять поведение админки, можно снять только фронтенд-часть. Это разумно, когда редакторы работают со старым набором плагинов или когда вы не хотите вмешиваться в поведение панели без необходимости.
<?php
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_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' );
} );Такой вариант обычно достаточно безопасен для большинства сайтов. Но если у вас есть кастомные письма через wp_mail и вы хотите, чтобы emoji в письмах оставались без подмены, проверьте это отдельно.
Когда лучше использовать плагин, а когда код
Если на сайте уже стоит плагин для технической чистки, проще включить отключение emoji там, чем добавлять ещё один кусок кода в тему. Но если задача точечная и вы хотите контролировать поведение без лишних зависимостей, код предпочтительнее.
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в дочерней теме или мини-плагине | Прозрачно, быстро, без лишних настроек | Нужно не забыть при миграции темы |
| Плагин для оптимизации | Удобно для нескольких технических правок сразу | Может добавлять лишние функции, если нужен только один переключатель |
| Ничего не делать | Нет риска сломать текущую конфигурацию | Остаются лишние скрипты и фильтры |
Если у вас уже используется набор инструментов для SEO и чистки сайта, например Clearfy Pro, проверьте, не дублируете ли вы отключение в двух местах. Двойная настройка часто приводит к путанице: кажется, что код не работает, хотя на самом деле его уже перехватывает плагин.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой страницы. Нужна проверка по коду и по запросам.
- Откройте исходный код страницы и убедитесь, что
wp-emoji-release.min.jsбольше не выводится. - Проверьте
<head>на отсутствие emoji-стилей и inline-скриптов. - В DevTools Network обновите страницу и убедитесь, что запрос к emoji-скрипту исчез.
- Откройте запись с emoji в контенте и проверьте, что символы отображаются нормально.
- Отправьте тестовое письмо через сайт, если вы отключали фильтр
wp_staticize_emoji_for_email.
Если на сайте включён кэш, очистите его после изменений. Иначе вы будете смотреть на старую версию HTML и решите, что код не сработал.
Частые ошибки и как их исправить
Удалили не тот хук
Иногда пытаются убрать только wp_head, а стили остаются в админке или в RSS. В результате часть обвязки исчезает, часть — нет. Решение простое: проверяйте все места, где WordPress добавляет emoji-логику, а не только фронтенд.
Поставили код в родительскую тему
После обновления темы изменения пропадают. Если правка нужна надолго, используйте дочернюю тему или мини-плагин. Это особенно важно, если сайт обслуживается несколькими людьми и тема обновляется по регламенту.
Сломали совместимость с плагином оптимизации
Некоторые плагины уже умеют отключать emoji. Если вы добавили такой же код вручную, в логике появляется дублирование. Обычно это не критично, но усложняет поддержку. Перед внедрением проверьте настройки текущих плагинов и уберите повторяющиеся действия.
Отключили emoji и забыли про кэш
Самая банальная проблема: код уже стоит, но в браузере всё ещё виден старый HTML. Очистите серверный кэш, CDN и кэш браузера. Если используете объектный кэш, он тоже может удерживать старые данные в некоторых сценариях.
Практические советы по безопасности и производительности
Отключение emoji — не про радикальную оптимизацию, а про аккуратную уборку лишнего. Не стоит превращать это в массовое удаление всего подряд из wp_head. Чем больше вы вырезаете без понимания, тем выше риск сломать совместимость с темой, плагинами и RSS.
Если цель — техническая чистка сайта, держите изменения в одном месте и документируйте их. Для небольших правок удобно завести мини-плагин с несколькими понятными функциями: так проще откатить конкретное изменение, чем искать его по functions.php.
Ещё один практический момент: не отключайте emoji только ради «ускорения на миллисекунды», если сайт и так перегружен тяжёлыми изображениями, шрифтами и сторонними скриптами. Сначала убирают реальные узкие места, потом — косметику. Emoji-скрипт как раз относится к косметике, но в чистом техническом аудите его тоже имеет смысл убрать.
Если нужен более широкий набор чистки
Когда задача не ограничивается emoji, а включает отключение дублей, чистку служебных ссылок и технические настройки SEO, удобнее смотреть на комплексные решения. В таких сценариях часто используют плагины для технической оптимизации, чтобы не держать десяток разрозненных сниппетов в теме. Но даже тогда полезно понимать, какой именно хук или фильтр меняется, чтобы не чинить сайт вслепую.
Главная проверка здесь простая: после правки сайт должен работать как раньше, а в HTML и Network должно стать меньше лишнего шума. Если это так, emoji-обвязка отключена корректно.