WordPress по умолчанию подгружает поддержку emoji через отдельные скрипты и фильтры. На небольшом сайте это часто незаметно, но на проектах, где уже вычищают лишние запросы и оптимизируют head, эти подключения становятся лишним шумом: добавляют запросы, усложняют разметку и мешают держать фронтенд под контролем.
Задача здесь не в том, чтобы «сломать emoji», а в том, чтобы отключить именно фронтенд-часть там, где она не нужна, и не затронуть админку, редактор и совместимость с плагинами.
Когда отключение emoji действительно имеет смысл
Если вы открываете исходный код страницы и видите подключение wp-emoji-release.min.js, а в head — инлайн-скрипт для проверки emoji, это нормальное поведение WordPress. Но если сайт уже оптимизируют по мелочам, эти элементы можно убрать без заметного риска.
Типичные сценарии
- сайт на классическом контенте, где emoji в старом виде не используются;
- нужно сократить количество лишних запросов в head;
- проект проходит аудит производительности и вычищается всё необязательное;
- есть строгие требования к минимальному фронтенду, но админка должна остаться рабочей.
Важно понимать границу: отключать нужно только публичную часть, а не ломать редактор Gutenberg или панель администратора. Именно из-за этого многие «универсальные» сниппеты из интернета работают плохо.
Диагностика: что именно подгружается и откуда
Перед правкой проверьте, что у вас действительно есть emoji-скрипты WordPress, а не что-то добавленное темой или плагином.
- Откройте исходный код страницы на фронтенде.
- Найдите
wp-emoji-release.min.jsи инлайн-функцию, связанную с emoji detection. - Проверьте, не добавляет ли тему собственные скрипты в
wp_head. - Сравните фронтенд и админку: в админке emoji обычно нужны, и это нормально.
Если скрипта нет, а лишний код всё равно есть, значит, источник другой. В таком случае сначала ищите подключение в теме или плагине, а не отключайте ядро наугад.
Пошаговое решение без поломки админки
Самый безопасный вариант — отключить emoji-функциональность только на фронтенде через functions.php дочерней темы или через свой мини-плагин. Так вы не потеряете изменения после обновления темы.
Вариант 1: отключить emoji через код
<?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. Но если вы хотите сохранить emoji в админке и убрать только фронтенд, лучше использовать более точечный подход.
Вариант 2: отключить только на фронтенде
<?php
add_action( 'wp_enqueue_scripts', function () {
if ( is_admin() ) {
return;
}
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
} );Этот вариант обычно предпочтительнее для живого сайта. Админка и редактор остаются в штатном режиме, а на публичной части исчезают лишние подключения.
Вариант 3: если нужен готовый инструмент
Если вы не хотите держать такие правки в коде, можно использовать плагин для чистки лишнего функционала. Например, в Clearfy Pro есть набор настроек для отключения ненужных элементов WordPress, включая часть технического мусора в head. Это удобнее для редакторов и администраторов, но всё равно требует проверки после включения.
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в дочерней теме | Точно контролируете поведение, без лишних зависимостей | Нужно следить за обновлениями и местом размещения кода |
| Плагин оптимизации | Удобно для нетехнической команды, есть переключатели | Риск включить лишние опции и задеть совместимость |
| Ничего не делать | Минимум риска поломки | Лишние скрипты остаются в head |
Как проверить, что решение сработало
Проверка должна быть не «на глаз», а по коду страницы и поведению сайта.
- Откройте исходный код и убедитесь, что
wp-emoji-release.min.jsбольше не выводится на фронтенде. - Проверьте, что в
<head>исчез инлайн-скрипт emoji detection. - Зайдите в админку и откройте редактор записи: если там всё работает, вы не задели лишнее.
- Посмотрите консоль браузера на предмет ошибок JavaScript после правки.
Если у вас есть Lighthouse или другой аудит производительности, повторите замер до и после. Не ищите магический прирост — задача здесь в сокращении лишних подключений и упрощении фронтенда.
Частые ошибки и как их исправить
Отключают emoji через слишком широкий сниппет
Иногда в код вставляют агрессивный набор remove_action без проверки контекста. В результате ломается админка или исчезают стили в письмах. Исправление простое: ограничьте отключение фронтендом или вынесите код в отдельный мини-плагин с понятной логикой.
Правят файл темы напрямую
Если изменить functions.php родительской темы, обновление всё затрёт. Для постоянных правок используйте дочернюю тему или собственный плагин. Это не вопрос вкуса, а вопрос воспроизводимости.
Путают emoji WordPress и emoji сторонних библиотек
Если на сайте остаются иконки или эмодзи, это не значит, что отключение не сработало. Проверьте именно стандартный скрипт WordPress. Тема может использовать собственные SVG-иконки или JS-библиотеки, и они к этой настройке не относятся.
Проверяют только кэшированную страницу
После изменения кода очистите кэш плагина, серверный кэш и CDN, если он есть. Иначе вы можете смотреть на старую версию страницы и делать неверные выводы.
Безопасность и производительность: что учесть перед внедрением
Отключение emoji — это маленькая оптимизация, но она должна быть частью общей дисциплины. Если вы уже чистите head, не добавляйте туда новые костыли ради одной правки.
- храните сниппеты в одном месте, а не раскидывайте по шаблонам;
- не отключайте то, что не проверили на тестовой копии;
- после правки обязательно сравнивайте фронтенд и админку;
- если используете плагин оптимизации, включайте опции по одной, а не пачкой.
Для сайтов, где техническая чистка идёт системно, удобно держать такие настройки в одном инструменте, а не собирать их из десятка разрозненных сниппетов. Но даже в этом случае код и поведение нужно проверять вручную: WordPress любит сюрпризы, если отключать что-то «на автомате».
Что делать, если скрипт не исчез
Если после правки wp-emoji-release.min.js всё ещё есть в коде, проверьте три вещи: код действительно загружен, он находится в активной теме или плагине, и кэш очищен. Если всё верно, значит, скрипт добавляет не ядро WordPress, а тема или другой плагин. Тогда ищите по проекту строку emoji или wp-emoji и отключайте источник точечно.
В рабочем проекте именно такой порядок экономит время: сначала диагностика, потом точечное отключение, затем проверка исходника и только после этого — перенос на продакшен.