Встроенная поддержка Emoji в WordPress редко нужна на обычном сайте, но скрипты и стили для неё часто продолжают грузиться на фронтенде и в админке. На небольших проектах это не критично, но если вы уже чистите сайт от лишних подключений, имеет смысл убрать и этот слой. Особенно когда задача простая: сократить количество запросов, не трогая контент и не ломая редактор.
Ниже — рабочий сценарий: как отключить Emoji, что именно будет убрано, как проверить результат и где чаще всего ошибаются.
Когда отключение Emoji действительно уместно
Речь не о «ускорении на десятки процентов», а о точечной чистке. Отключать Emoji имеет смысл, если:
- сайт работает на русском языке и эмодзи используются редко;
- вы оптимизируете фронтенд и убираете лишние подключения;
- нужно сократить количество HTTP-запросов и мелких inline-скриптов;
- вы хотите привести сайт к более предсказуемому набору ресурсов.
Если у вас редакция активно использует эмодзи в тексте, отключение не обязательно: WordPress и браузеры и так умеют показывать большинство символов без отдельного скрипта. Но если вы не используете эту функцию сознательно, её можно убрать без заметных побочных эффектов.
Диагностика: что именно грузит WordPress
По умолчанию WordPress добавляет поддержку Emoji через набор хуков. На фронтенде это обычно видно как подключение небольшого скрипта и иногда inline-логики в <head>. Проверить это проще всего через исходный код страницы или вкладку Network в DevTools.
Что искать в HTML
Откройте страницу сайта и найдите упоминания wp-emoji-release.min.js или похожие фрагменты. Если они есть, значит поддержка Emoji активна и на фронтенде.
Дополнительно можно проверить, не добавляет ли тема или плагин собственные стили/скрипты для эмодзи. Это бывает редко, но если вы видите лишние подключения после отключения стандартного механизма, источник уже не в ядре WordPress.
Пошаговое решение через код
Самый надёжный способ — убрать стандартные действия WordPress через remove_action(). Код лучше добавлять в дочернюю тему или в небольшой 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' );
} );Этот вариант отключает не только фронтенд, но и часть служебной обработки в админке и письмах. Для большинства сайтов это именно то, что нужно: убрать лишнее последовательно, а не только спрятать скрипт на витрине.
Если нужен более мягкий вариант
Иногда достаточно убрать только фронтенд, а админку оставить без изменений. Тогда можно ограничиться двумя строками:
<?php
add_action( 'init', function () {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
} );Этот вариант полезен, если вы не хотите вмешиваться в email-обработку или служебные фильтры, но хотите почистить публичную часть сайта.
Плагин или код: что выбрать
Если вы уже используете плагин для технической чистки сайта, удобнее отключить Emoji там же. Если нет — отдельный кодовый сниппет обычно надёжнее и прозрачнее. Ниже короткое сравнение.
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в теме или mu-plugin | Контроль, минимум зависимостей, легко проверить | Нужно не забыть при смене темы |
| Плагин для оптимизации | Удобно, если уже есть единая панель настроек | Ещё одна зависимость, часть опций может быть скрыта |
| Ничего не делать | Ноль риска для конфигурации | Лишние подключения остаются |
Если вы используете Clearfy Pro, отключение Emoji обычно можно собрать вместе с другими настройками чистки: это удобно, когда вы параллельно убираете дубли, лишние скрипты и служебные элементы. Но если задача точечная, код всё равно остаётся самым предсказуемым вариантом.
Проверка результата после внедрения
После добавления кода не ограничивайтесь визуальной проверкой страницы. Нужно убедиться, что WordPress действительно перестал выводить Emoji-ресурсы.
Что проверить вручную
- Откройте исходный код страницы и найдите
wp-emoji-release.min.js. - Проверьте, исчезли ли связанные стили из
<head>. - Откройте админку и убедитесь, что редактор работает штатно.
- Если сайт отправляет письма через WordPress, проверьте тестовое письмо.
Проверка через браузер
В DevTools на вкладке Network обновите страницу и отфильтруйте запросы по слову emoji. Если отключение сработало, связанных запросов быть не должно. В исходнике страницы также не должно остаться inline-скрипта, который подгружает emoji-детектор.
Частые ошибки и как их исправить
Код добавили не туда
Если вставить сниппет в файл, который не загружается на фронтенде, эффекта не будет. Для темы используйте functions.php дочерней темы. Для независимого решения лучше создать mu-plugin, чтобы код не зависел от смены темы.
Слишком рано или слишком поздно сняли хуки
Если вы вызываете remove_action() до того, как WordPress зарегистрировал соответствующие действия, отключение не сработает. Поэтому код и обёрнут в add_action( 'init', ... ): к этому моменту стандартные хуки уже доступны.
Ожидали, что исчезнут все эмодзи из контента
Отключение Emoji не удаляет символы из записей. Оно только убирает служебную поддержку WordPress. Если в тексте уже есть эмодзи, они будут отображаться средствами браузера, а не через дополнительный скрипт.
Проверяли только главную страницу
Иногда тема по-разному подключает ресурсы на отдельных шаблонах. Проверьте не только главную, но и запись, страницу, архив и страницу поиска. Это особенно важно, если тема использует собственные обёртки или кастомные шаблоны.
Практические советы по безопасности и производительности
Отключение Emoji — безопасная операция, если вы не правите ядро и не удаляете файлы WordPress вручную. Но есть несколько полезных правил:
- не редактируйте
functions.phpосновной темы напрямую, если тема обновляется; - для точечных правок используйте дочернюю тему или mu-plugin;
- после изменений очищайте кэш страницы и кэш CDN, если он есть;
- не смешивайте в одном сниппете слишком много разных оптимизаций без необходимости;
- если используете плагин оптимизации, проверьте, не отключает ли он Emoji уже сам.
Если на сайте уже есть системная чистка ресурсов, отключение Emoji логично ставить рядом с другими точечными улучшениями: удалением лишних эмодзи-скриптов, отключением embed-ов, чисткой wp_head и сокращением служебных подключений. Главное — после каждого шага проверять, что именно изменилось, а не вносить всё сразу и потом искать причину поломки.
В итоге задача решается коротко: убрать стандартные хуки, проверить исходник страницы и убедиться, что админка и письма не пострадали. Это тот случай, когда небольшая техническая правка действительно делает фронтенд чище без риска для контента.