Встроенная поддержка эмодзи в WordPress редко нужна на большинстве сайтов, но она всё равно добавляет лишние запросы к wp-emoji-release.min.js и фильтры в <head>. На небольшом проекте это не критично, а на сайте с жёсткой оптимизацией фронтенда и кешированием — уже лишний шум. Если задача именно убрать emoji-скрипты и не затронуть работу редактора, проще сделать это точечно, чем вырезать что-то вручную из ядра или темы.
Когда отключение эмодзи действительно имеет смысл
Отключать встроенную поддержку стоит не «потому что так делают все», а если вы видите конкретную причину:
- в отчёте Lighthouse или WebPageTest есть лишний запрос к
wp-emoji-release.min.js; - вы собираете фронтенд в минимальный набор скриптов и не хотите тащить код, который не используется;
- на сайте строгая политика по сторонним ресурсам и вы хотите оставить только нужные зависимости;
- нужно уменьшить количество фильтров и действий в
wp_headиadmin_print_scripts.
Если сайт активно использует комментарии, редактор Gutenberg и пользовательский контент с emoji, отключение всё равно обычно безопасно: современные браузеры и так умеют отображать символы Unicode. Но важно понимать, что мы убираем именно встроенную подмену и детектирование старых браузеров, а не «запрещаем эмодзи» как символы.
Диагностика: что именно грузит WordPress
Перед правкой проверьте, что проблема действительно в emoji-скриптах. Откройте исходный код страницы и найдите строки, связанные с emoji. Обычно это:
wp-emoji-release.min.js;- inline-скрипт с проверкой поддержки emoji;
- фильтры, которые WordPress добавляет в
wp_headиadmin_print_scripts.
Если у вас стоит кеш-плагин или серверный кеш, после изменений не забудьте сбросить кеш. Иначе вы будете смотреть на старую версию страницы и решите, что ничего не сработало.
Что проверить до изменений
- есть ли на странице запрос к
/wp-includes/js/wp-emoji-release.min.js; - не отключает ли его уже тема или оптимизационный плагин;
- не завязан ли на него какой-то кастомный код в дочерней теме;
- используется ли минификация, которая может скрывать реальную причину лишнего скрипта.
Рабочее решение через functions.php или mu-plugin
Самый надёжный способ — убрать стандартные действия 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' );
} );
Этот вариант отключает и фронтенд, и админку. Если вам нужно убрать emoji только на сайте, но оставить в панели управления, не трогайте admin_print_scripts и admin_print_styles.
Если нужен только фронтенд
<?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' );
} );
Такой вариант обычно удобнее для сайтов, где редакторы работают в админке и не хотят неожиданностей в визуальном редакторе.
Альтернатива через плагин: когда код трогать не хочется
Если вы не ведёте проект как разработчик и не хотите хранить свой сниппет, можно использовать оптимизационный плагин, который умеет отключать emoji вместе с другими мелкими дублями и служебными скриптами. Важно только не включать сразу несколько плагинов, которые делают одно и то же: потом сложно понять, кто именно убрал скрипт, а кто сломал порядок загрузки.
| Подход | Плюсы | Минусы |
|---|---|---|
Код в functions.php / mu-plugin |
Прозрачно, быстро, без лишних зависимостей | Нужно не забыть про обновления темы и контроль версий |
| Оптимизационный плагин | Удобно для редактора и нескольких мелких правок сразу | Есть риск конфликтов с кешем и минификацией |
| Правка ядра | Не нужна | Сломается при обновлении WordPress |
Если вам нужен именно набор точечных SEO- и технических правок, а не отдельный плагин под каждую мелочь, имеет смысл смотреть в сторону комплексных решений вроде Clearfy Pro: там есть функции для чистки лишнего кода и дублей. Но даже в этом случае проверяйте, что именно отключено, а не включайте всё подряд.
Проверка результата после внедрения
После добавления кода или настройки плагина проверьте результат не «на глаз», а по шагам:
- очистите кеш сайта, CDN и браузера;
- откройте исходный код страницы;
- поиск по странице должен не находить
wp-emoji-release.min.js; - проверьте, что в
<head>не осталось emoji-скрипта и связанных inline-блоков; - зайдите в админку и убедитесь, что редактор постов открывается без ошибок JavaScript;
- если есть комментарии или RSS, проверьте, что они продолжают работать штатно.
Для быстрой проверки можно использовать DevTools в браузере: вкладка Network покажет, грузится ли файл wp-emoji-release.min.js. Если файла нет, а страница и редактор работают, задача выполнена.
Частые ошибки и как их исправить
Код добавили не туда
Если вставить сниппет в файл, который не загружается на фронтенде, ничего не изменится. Для темы используйте functions.php дочерней темы или mu-plugin. Для плагина — основной файл плагина или отдельный must-use плагин.
Отключили не тот хук
Иногда пытаются убрать только wp_head, но забывают про стили или фильтры для RSS и писем. В результате emoji-скрипт исчезает с сайта, но продолжает попадать в письма или ленты. Если задача — полное отключение, используйте полный набор remove_action() и remove_filter().
Кеш не очищен
Это самая частая причина ложного вывода «не работает». После правки нужно сбросить не только плагин кеша, но и серверный кеш, если он есть. На CDN тоже может висеть старая версия HTML.
Сломали совместимость с плагином оптимизации
Если у вас уже есть плагин, который минифицирует и объединяет скрипты, не дублируйте его функции вручную. Сначала проверьте, не отключает ли он emoji сам. Два разных механизма, которые правят один и тот же участок, часто дают путаницу в отладке.
Безопасность и производительность: что важно не забыть
Отключение emoji само по себе безопасно, если вы не меняете ядро и не удаляете системные файлы. Но есть несколько практических правил:
- не редактируйте файлы ядра WordPress;
- храните сниппет в дочерней теме или
mu-plugin; - если используете плагин, проверьте его обновления и совместимость с вашей версией WordPress;
- после правки прогоните страницу через валидный кеш и DevTools, чтобы убедиться, что лишний скрипт исчез именно там, где нужно.
Если вы уже делаете техническую чистку сайта, отключение emoji логично сочетать с другими точечными оптимизациями: удалением лишних эмбедов, отключением неиспользуемых архивов и чисткой служебных мета-тегов. Но каждую правку лучше проверять отдельно, иначе потом сложно понять, что именно дало эффект или вызвало проблему.
На практике это одна из тех задач, где лучшее решение — самое скучное: короткий сниппет, проверка в исходнике и контроль кеша. Тогда WordPress перестаёт грузить лишнее, а вы не тратите время на поиск несуществующей проблемы в теме или редакторе.