WordPress до сих пор по умолчанию подгружает небольшой набор скриптов и стилей для поддержки emoji. На современных сайтах это часто лишняя нагрузка: дополнительные запросы, лишний код в <head> и еще один источник шума в техническом аудите. Если задача — вычистить фронтенд без риска для контента и админки, emoji можно отключить точечно.
Ниже разберем, что именно отключать, как проверить, что изменения сработали, и где чаще всего допускают ошибки.
Когда это имеет смысл
Отключение emoji полезно не как «магическая оптимизация», а в конкретных сценариях:
- сайт проходит аудит по количеству запросов и лишним ресурсам;
- нужно убрать ненужные inline- и внешние скрипты из
head; - вы поддерживаете старую тему или набор плагинов, где важна предсказуемость фронтенда;
- хотите сократить технический шум перед дальнейшей оптимизацией кеша и критического CSS.
Важно понимать: emoji-скрипты обычно не являются главным тормозом сайта. Но если вы уже чистите фронтенд, это один из безопасных и понятных шагов.
Диагностика: что именно добавляет WordPress
По умолчанию WordPress подключает проверку поддержки emoji через JavaScript и добавляет соответствующие фильтры в wp_head и wp_print_styles. На практике это можно увидеть в исходном коде страницы или в DevTools.
Что искать в HTML
Откройте страницу сайта и посмотрите исходник. Обычно встречаются:
- инлайн-скрипт с проверкой emoji;
- подключение
wp-emoji-release.min.js; - иногда дополнительные стили, связанные с emoji.
Если вы используете плагин для анализа производительности, он может подсветить лишние запросы или inline code в head. Но лучше проверить руками: так вы точно понимаете, что отключаете.
Как отключить emoji в WordPress
Самый надежный способ — добавить код в functions.php дочерней темы или в собственный мини-плагин. Так вы не зависите от настроек темы и не потеряете изменения при обновлении.
Рабочий код для отключения emoji
<?php
add_action( 'init', 'wpform_disable_wp_emojis' );
function wpform_disable_wp_emojis() {
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' );
add_filter( 'tiny_mce_plugins', 'wpform_disable_emojis_tinymce' );
}
function wpform_disable_emojis_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
}
return array();
}Этот вариант отключает emoji не только на фронтенде, но и в админке, а также убирает их из TinyMCE и RSS-выводов. Для большинства сайтов этого достаточно.
Если нужен только фронтенд
Иногда emoji в админке лучше оставить, особенно если редакторы активно работают с контентом и вы не хотите менять поведение панели управления. Тогда можно убрать только фронтенд-часть:
<?php
add_action( 'init', 'wpform_disable_frontend_emojis' );
function wpform_disable_frontend_emojis() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
}Это более мягкий вариант. Он подходит, если цель — почистить публичную часть сайта, но не трогать редактор.
Сравнение подходов: код, плагин или ничего не делать
| Подход | Что дает | Минус |
|---|---|---|
| Код в теме или мини-плагине | Полный контроль, без лишних зависимостей | Нужно аккуратно вставить и протестировать |
| Плагин оптимизации | Можно отключить emoji вместе с другими мелкими оптимизациями | Лишний слой настроек, иногда конфликтует с темой |
| Ничего не менять | Нулевая вероятность сломать поведение | Лишний код остается в head и админке |
Если у вас уже стоит плагин вроде Clearfy Pro и в нем есть настройка отключения emoji, это допустимый вариант. Но для точечной задачи код обычно прозрачнее: видно, что именно отключено, и проще контролировать изменения.
Пошаговое внедрение без риска
- Сделайте резервную копию файлов темы или подготовьте дочернюю тему.
- Добавьте код в
functions.phpдочерней темы либо в отдельный mu-plugin. - Очистите кеш сайта, кеш сервера и кеш браузера.
- Откройте главную страницу и исходный код.
- Проверьте админку: редактор записей, комментарии, RSS, если они используются.
Мини-плагин вместо правки темы
Если не хотите трогать тему, можно создать простой mu-plugin. Это удобно для технических правок, которые должны жить отдельно от дизайна.
<?php
/**
* Plugin Name: WPForm Disable Emojis
*/
add_action( 'init', 'wpform_disable_wp_emojis' );
function wpform_disable_wp_emojis() {
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' );
}Файл можно положить в wp-content/mu-plugins/. Такой код загружается автоматически и не зависит от активации в админке.
Как проверить, что решение сработало
Проверка должна быть не «на глаз», а по факту.
- в исходнике страницы больше нет
wp-emoji-release.min.js; - в
<head>не выводится emoji detection script; - в DevTools на вкладке Network нет запроса к emoji-скрипту;
- в админке не появились ошибки редактора или комментариев;
- RSS и email-шаблоны не изменили поведение, если они используются на сайте.
Если у вас включен кеш, обязательно проверьте и очищенную, и закешированную версию страницы. Иногда кажется, что код не сработал, хотя на самом деле вы смотрите старый HTML из кеша.
Частые ошибки и как их исправить
Код добавили не туда
Если вставить фрагмент в родительскую тему, обновление ее перезапишет изменения. Для постоянной технической правки используйте дочернюю тему или mu-plugin.
Отключили только часть хуков
Иногда убирают только wp_head, но оставляют стили или админские скрипты. В итоге часть нагрузки остается, а проверка показывает неполную очистку. Если цель — полное отключение, используйте полный набор remove_action и remove_filter.
Не очистили кеш
После правки код может быть уже отключен, но старый HTML продолжает отдаваться из кеша. Очистите кеш плагина, серверный кеш и CDN, если он есть.
Сломали совместимость в старом редакторе
На некоторых старых установках и при нестандартных плагинах редактирования emoji-скрипт может быть нужен для части интерфейса. Если после отключения появились странности в админке, верните отключение только на фронтенде.
Что еще можно убрать вместе с emoji
Если вы уже чистите head, имеет смысл посмотреть на соседние мелкие оптимизации: лишние эмодзи-скрипты, неиспользуемые встроенные стили темы, дублирующиеся мета-теги, лишние REST-запросы от плагинов. Но здесь важно не идти по списку «все подряд» — отключайте только то, что вы реально проверили.
Для аккуратной технической чистки полезно держать изменения в одном месте: отдельный mu-plugin, документированный список отключений и короткий чек-лист проверки после обновлений WordPress.
Если вам нужен более широкий набор точечных оптимизаций, удобно собрать их в одном техническом слое, а не размазывать по теме. Так проще откатывать изменения и искать причину регрессий.