WordPress до сих пор может добавлять на сайт лишние emoji-скрипты и стили, даже если вы не используете встроенные эмодзи как функциональность. На небольших проектах это обычно не критично, но в технически чистой сборке такие запросы просто не нужны: они засоряют head, добавляют лишний JavaScript и иногда мешают аудитам производительности.
Задача здесь не в том, чтобы «оптимизировать всё подряд», а в том, чтобы убрать конкретный механизм WordPress без побочных эффектов для контента, редактора и админки.
Когда это действительно имеет смысл
Отключать emoji-обвязку стоит, если вы видите в исходнике страницы подключения вроде wp-emoji-release.min.js и не используете старую совместимость с браузерами, которым она нужна. На современных проектах это чаще всего лишний код.
Проверить наличие можно прямо в исходном коде страницы или через DevTools:
- откройте страницу сайта;
- посмотрите вкладку
Networkи фильтр поemoji; - проверьте исходный HTML на наличие
wp-emoji-release.min.jsи inline-скрипта с проверкой canvas.
Что именно добавляет WordPress
Обычно это не один файл, а связка из скрипта и фильтра, который подмешивает inline-проверку. Если сайт собирается минималистично, эти элементы лучше убрать на уровне functions.php дочерней темы или через mu-plugin.
Диагностика проблемы перед правкой
Сначала убедитесь, что вы не путаете emoji-скрипты с чем-то похожим от темы или плагина. Иногда в head есть собственные иконки, SVG-спрайты или аналитика, и их легко принять за системные подключения WordPress.
Минимальная проверка выглядит так:
- откройте исходный код страницы;
- найдите
wp-emoji-release.min.js; - проверьте, есть ли подключение в админке и на фронтенде;
- посмотрите, не завязаны ли на emoji какие-то пользовательские скрипты темы.
Если на сайте есть старые комментарии, контент из внешних источников или интеграции, которые явно рассчитывают на emoji-поддержку WordPress, отключение всё равно обычно безопасно. Но лучше проверить на staging-копии.
Пошаговое решение без плагинов
Самый предсказуемый способ — убрать стандартные действия WordPress через remove_action() и фильтр для TinyMCE. Код лучше добавлять в дочернюю тему или в отдельный mu-plugin, чтобы он не потерялся после обновления темы.
<?php
// Убираем emoji-скрипты и стили на фронтенде.
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' );
// Отключаем emoji в TinyMCE.
add_filter( 'tiny_mce_plugins', function( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
}
return array();
} );
// Убираем преобразование emoji в контенте и комментариях.
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' );Если вы предпочитаете более аккуратный вариант для проекта с несколькими средами, вынесите это в mu-plugin, например wp-content/mu-plugins/disable-emoji.php. Так код будет работать независимо от активной темы.
Вариант через mu-plugin
<?php
/**
* Plugin Name: Disable Emoji Support
*/
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( 'tiny_mce_plugins', function( $plugins ) {
return is_array( $plugins ) ? array_diff( $plugins, array( 'wpemoji' ) ) : array();
} );Этот вариант удобен тем, что не зависит от темы и не требует отдельного плагина из репозитория ради одной настройки.
Если нужен готовый инструмент
На проектах, где вы одновременно чистите дубли, отключаете лишние мета-теги и приводите head к аккуратному виду, проще использовать один инструмент для технической гигиены. Например, Clearfy Pro умеет закрывать часть типовых «лишних» подключений без ручного кода. Но если задача точечная, код выше обычно прозрачнее и легче контролируется в git.
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в mu-plugin | Прозрачно, быстро, не зависит от темы | Нужно один раз аккуратно внедрить |
| Плагин для чистки | Удобно для нескольких задач сразу | Лишняя зависимость, часть настроек может быть избыточной |
| Ничего не делать | Нет риска сломать что-то руками | Лишние запросы и шум в head остаются |
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой страницы. Нужно убедиться, что WordPress действительно перестал выводить emoji-механизм и что админка не пострадала.
- в исходнике страницы больше нет
wp-emoji-release.min.js; - в
Networkне загружается emoji-скрипт; - в
headисчезли связанные inline-фрагменты; - редактор записей открывается без ошибок;
- комментарии и письма из WordPress отправляются как раньше.
Если у вас включён кэш, очистите его после правки. Иначе вы можете смотреть на старую версию HTML и решить, что код не сработал.
Частые ошибки и как их исправить
Код добавили не туда
Если вставить правку в файл, который не загружается на фронтенде, эффекта не будет. Для темы это обычно functions.php дочерней темы, для независимого решения — mu-plugin.
Отключили только один хук
Иногда убирают только print_emoji_detection_script, но оставляют стили или фильтры для email. В результате часть следов остаётся, и аудит всё равно показывает emoji-обвязку.
Проверяли без очистки кэша
На сайтах с серверным или плагинным кэшем старый HTML может жить дольше, чем кажется. После изменения кода очистите кэш страницы, объектный кэш, если он есть, и CDN.
Сломали TinyMCE на старом проекте
Если у вас очень старая сборка WordPress или кастомный редактор, сначала проверьте staging. На современных версиях отключение wpemoji в TinyMCE обычно проходит без проблем, но на нестандартных установках лучше не гадать.
Практические советы по безопасности и производительности
Не пытайтесь править ядро WordPress ради такой задачи. Обновление всё равно перезапишет изменения, а ручные правки в core — это лишний риск.
Если вы ведёте несколько сайтов, держите такие технические отключения в отдельном mu-plugin или в общем репозитории проекта. Тогда можно быстро понять, что именно влияет на head и какие изменения уже внесены.
Для комплексной чистки сайта полезно смотреть не только на emoji, но и на другие системные подключения: лишние эмодзи, oEmbed, REST-пути, неиспользуемые стили темы. Но отключать их стоит по одному, с проверкой после каждого шага, а не «пакетом» без диагностики.
Если нужен более широкий набор технических отключений без ручного сопровождения, можно посмотреть в сторону Clearfy Pro, но для точечной задачи код остаётся самым предсказуемым вариантом.