Встроенная поддержка emoji в WordPress почти никогда не нужна на обычном сайте, но скрипты и фильтры для неё всё равно могут грузиться в <head> и в админке. На небольшом проекте это не катастрофа, но на аккуратно настроенном сайте такие мелочи лучше убрать: меньше лишних запросов, меньше стороннего кода, проще контролировать фронтенд.
Ниже — рабочие способы отключить emoji без ломки редактора и без опасных правок ядра. Сразу оговорюсь: речь именно о стандартной поддержке WordPress, а не о замене emoji на сторонние шрифты или иконки.
Когда отключение emoji действительно имеет смысл
Если сайт использует обычный текст, заголовки, статьи и формы, встроенный emoji-скрипт чаще всего не даёт пользы. Он нужен в основном для старых браузеров и для редких сценариев, где важна совместимость с очень старыми версиями окружения. На большинстве современных проектов это уже лишняя прослойка.
Проверять задачу стоит не по ощущениям, а по факту: откройте исходный код страницы и найдите подключение wp-emoji-release.min.js. Если оно есть, а вы emoji не используете как функциональность сайта, это кандидат на удаление.
Что именно добавляет WordPress
По умолчанию WordPress подключает небольшой набор скриптов и фильтров, чтобы emoji корректно отображались в старых окружениях. Это не «тяжёлый» код, но он всё равно создаёт лишние действия в wp_head, wp_print_styles, admin_print_scripts и связанных хуках. Если вы чистите сайт от лишнего технического шума, этот блок логично убрать.
Диагностика: как понять, что emoji реально подключены
Сначала убедитесь, что проблема есть именно на вашем сайте. Не все темы и плагины ведут себя одинаково, а иногда emoji уже отключены оптимизатором или сборкой темы.
- Откройте страницу сайта в браузере.
- Посмотрите исходный код и найдите
wp-emoji-release.min.js. - Проверьте, есть ли в
<head>инлайн-скрипт сwpEmojiSettingsSupports. - Зайдите в админку и проверьте, не грузится ли тот же скрипт там.
Если у вас стоит плагин оптимизации, он может уже отключать emoji частично. В таком случае важно не дублировать одно и то же решение в нескольких местах: это не ускорит сайт, а только усложнит поддержку.
Пошаговое решение через код
Самый надёжный вариант — отключить emoji через functions.php дочерней темы или через небольшой mu-plugin. Второй вариант предпочтительнее, если вы не хотите зависеть от темы.
Вариант 1: добавить код в 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' );
remove_filter( 'the_content', 'wp_staticize_emoji' );
remove_filter( 'comment_text', 'wp_staticize_emoji' );
} );Этот набор убирает и фронтенд, и админку, и связанные фильтры, которые подменяют emoji в контенте и письмах. Для большинства сайтов этого достаточно.
Вариант 2: отдельный 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' );
remove_filter( 'the_content', 'wp_staticize_emoji' );
remove_filter( 'comment_text', 'wp_staticize_emoji' );
} );Для mu-plugin не нужен активационный экран: достаточно положить файл в правильную папку. Это удобно, если у вас несколько сайтов с одинаковой базовой настройкой.
Если удобнее через плагин
На проектах без доступа к коду проще использовать плагин оптимизации, если в нём есть отключение emoji. Например, в Clearfy Pro есть набор настроек для чистки WordPress от лишних функций. Это нормальный вариант, если вы уже ведёте техническую оптимизацию через интерфейс, а не через код.
| Подход | Плюсы | Минусы | Когда выбирать |
|---|---|---|---|
| Код в теме | Быстро, прозрачно, без лишних зависимостей | Слетит при смене темы | Если у вас есть дочерняя тема и доступ к репозиторию |
| mu-plugin | Не зависит от темы, удобно для поддержки | Нужно один раз правильно развернуть файл | Если сайт обслуживается как проект, а не как разовая сборка |
| Плагин оптимизации | Управление через админку, меньше ручных правок | Дополнительная зависимость от плагина | Если уже используете плагин для чистки и кеша |
Проверка результата после внедрения
После отключения emoji не ограничивайтесь визуальной проверкой. Нужно убедиться, что код действительно исчез из фронтенда и админки.
- Откройте исходный код страницы и проверьте, что
wp-emoji-release.min.jsбольше не подключается. - Проверьте, что в
<head>нет инлайн-скрипта сwpEmojiSettingsSupports. - Зайдите в редактор записей и убедитесь, что он работает без ошибок.
- Если у вас есть кэш, очистите его и проверьте страницу в режиме инкогнито.
Для быстрой проверки можно использовать поиск по HTML-ответу страницы или DevTools во вкладке Network. Если файл всё ещё загружается, значит отключение не сработало или его переопределяет другой плагин.
Что считать нормальным результатом
Нормально, если после отключения emoji в исходнике пропали связанные скрипты и стили, а редактор и комментарии продолжают работать. Ненормально, если после правки сломалась админка или перестали отображаться символы в письмах: это признак того, что вы удалили не тот фильтр или внесли код не в тот контекст.
Частые ошибки и как их исправить
На практике проблемы возникают не из-за самого отключения emoji, а из-за способа внедрения.
- Код вставили в родительскую тему. После обновления он исчезнет. Перенесите его в дочернюю тему или mu-plugin.
- Отключили только фронтенд. Скрипт остаётся в админке и продолжает грузиться там. Уберите и
admin_print_scripts, иadmin_print_styles. - Плагин оптимизации уже делает то же самое. Двойное отключение не ломает сайт, но усложняет диагностику. Оставьте один источник правды.
- Проверяли только визуально. Без исходника легко пропустить, что файл всё ещё подключён, но скрыт кешем.
Если после правки появились ошибки в админке, временно отключите свой код и проверьте, не конфликтует ли он с другим плагином, который фильтрует контент или письма. В таких случаях лучше идти от минимального набора: сначала убрать только фронтенд, потом расширять отключение.
Безопасность и производительность: что учесть перед удалением
Отключение emoji — безопасная операция, если вы не трогаете ядро и не удаляете файлы вручную. Но есть несколько практических моментов.
- Не редактируйте файлы ядра WordPress.
- Сделайте резервную копию перед правкой, если сайт рабочий и без staging.
- После изменений очистите серверный и браузерный кэш.
- Если сайт многоязычный, проверьте письма и комментарии на символы, которые могут проходить через фильтры.
Если вы уже используете системную чистку WordPress, отключение emoji логично добавить в общий набор технических правок вместе с удалением лишних эмбедов, REST-эндпоинтов, архивов и других ненужных элементов. Но не смешивайте всё в один огромный файл без комментариев: потом это сложно сопровождать.
В итоге задача решается за несколько минут, но ценность здесь не в экономии байтов как таковой, а в том, чтобы на сайте оставался только тот код, который действительно нужен проекту.