WordPress до сих пор по умолчанию подгружает поддержку emoji через отдельные скрипты и стили. На небольшом сайте это не выглядит критично, но если вы чистите фронтенд от лишних запросов, отключение этой части — нормальная точечная оптимизация. Особенно если у вас уже есть кэш, минификация и вы хотите убрать всё, что не влияет на отображение контента.
Ниже — рабочий способ отключить emoji в WordPress без правки ядра, с проверкой результата и разбором того, что чаще всего ломают при такой настройке.
Когда это вообще имеет смысл
Отключать emoji стоит не ради мифического «ускорения в разы», а когда вы системно приводите сайт к более чистой загрузке:
- на сайте много страниц и вы отслеживаете каждый лишний запрос;
- используется строгая оптимизация фронтенда, в том числе удаление неиспользуемых скриптов;
- вы хотите убрать стандартные wp-emoji-release.min.js и связанные inline-обработчики;
- вы контролируете, что контент не зависит от старых браузерных костылей WordPress.
Если сайт живёт на обычной теме и вы не занимаетесь технической чисткой, практический выигрыш может быть небольшим. Но как часть общей оптимизации это нормальный и безопасный шаг.
Диагностика: как понять, что emoji действительно грузятся
Проверка простая. Откройте исходный код страницы и найдите упоминания wp-emoji-release.min.js или emoji. Обычно WordPress подключает:
- скрипт из
/wp-includes/js/wp-emoji-release.min.js; - inline-скрипт, который проверяет поддержку emoji;
- иногда дополнительные стили для старых сценариев.
Если вы используете DevTools, откройте вкладку Network и обновите страницу. В списке запросов должен быть виден отдельный JS-файл emoji. После отключения он исчезает.
Что важно проверить до изменений
- есть ли у вас плагин оптимизации, который уже отключает emoji;
- не добавлены ли похожие фильтры в
functions.phpтемы; - не используете ли вы дочернюю тему, где часть оптимизаций уже вынесена в отдельный файл;
- не подключает ли кеш-плагин собственную генерацию критических скриптов, которая может скрыть результат проверки.
Пошаговое решение через код
Самый надёжный вариант — добавить отключение через functions.php дочерней темы или через небольшой 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' );
} );
add_filter( 'emoji_svg_url', '__return_false' );Этот вариант убирает загрузку emoji и на фронтенде, и в админке. Если вам нужно оставить emoji в админке, а убрать только на сайте, можно не трогать админские хуки:
<?php
add_action( 'init', function () {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
} );
add_filter( 'emoji_svg_url', '__return_false' );Почему лучше не править ядро
Потому что обновление WordPress всё перетрёт. Кроме того, если вы потом будете искать причину проблемы, изменения в ядре только усложнят диагностику. Для точечной оптимизации нужен обратимый способ: тема, дочерняя тема или mu-plugin.
Сравнение подходов
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в дочерней теме | Просто внедрить, легко откатить | Зависит от темы |
| mu-plugin | Не отключится при смене темы | Нужно аккуратно вести отдельный файл |
| Плагин оптимизации | Без кода, удобно для редактора | Может уже делать это частично, есть риск дублирования настроек |
Если у вас уже стоит плагин для чистки WordPress, например Clearfy Pro, сначала проверьте, не отключены ли emoji там. Дублировать одну и ту же оптимизацию в двух местах не нужно: потом сложно понять, что именно сработало.
Как проверить, что решение сработало
После внесения кода проверьте три вещи:
- В исходном коде страницы больше нет
wp-emoji-release.min.js. - Во вкладке Network нет отдельного запроса к emoji-скрипту.
- На странице не появляется ошибок JavaScript, связанных с удалёнными обработчиками emoji.
Если у вас включён кэш, очистите его перед проверкой. Иначе вы можете смотреть на старую версию страницы и решить, что код не работает.
Быстрая проверка через браузер
Откройте любую страницу сайта, затем:
- Ctrl+U или просмотр исходника;
- поиск по слову
emoji; - в DevTools — Network → обновить страницу → фильтр по
js.
Если файл исчез, а визуально контент не изменился, значит задача выполнена. Emoji в тексте и комментариях по-прежнему будут отображаться там, где браузер их поддерживает нативно.
Частые ошибки и как их исправить
Код добавили не туда
Если вставить фрагмент в файл, который не загружается на фронтенде, результата не будет. Для темы используйте functions.php дочерней темы. Для более надёжного варианта — отдельный mu-plugin в wp-content/mu-plugins/.
Скрипт остался из-за кэша
После изменения кода очистите серверный кэш, кэш плагина и браузерный кэш. Иначе вы увидите старую сборку страницы и будете искать несуществующую ошибку.
Отключили не только emoji, но и нужные стили
Иногда пытаются удалить вообще всё, что связано с emoji, включая лишние фильтры или сторонние оптимизации. Не стоит трогать больше, чем нужно. Если задача — убрать только стандартную поддержку emoji WordPress, достаточно показанного кода.
Плагин и код делают одно и то же
Если оптимизатор уже отключает emoji, дополнительный код не нужен. В лучшем случае это просто лишняя запись в проекте, в худшем — конфликт при обновлении или неожиданное поведение в админке.
Практические советы по безопасности и производительности
Отключение emoji — мелкая правка, но подход к ней должен быть таким же, как к любой оптимизации:
- вносите изменения через дочернюю тему или mu-plugin, а не в ядро;
- сохраняйте код в отдельном файле, если у вас несколько точечных оптимизаций;
- после внедрения проверяйте не только фронтенд, но и админку, если вы отключали админские хуки;
- не дублируйте одну настройку в плагине и в коде;
- если используете плагин чистки сайта, сначала изучите его текущие опции, а потом уже добавляйте ручной код.
Если вам нужно системно убирать лишние элементы WordPress, удобнее держать такие правки в одном месте. В этом сценарии иногда проще использовать специализированный плагин для чистки, чем разносить мелкие фильтры по теме и отдельным сниппетам.
После отключения emoji сайт не станет «быстрее вдвое», но фронтенд станет чуть чище, а список подключаемых стандартных ресурсов — короче. Для технически аккуратного WordPress-проекта это нормальный результат.