В WordPress поддержка emoji включена по умолчанию уже много лет. На современных сайтах это редко нужно, но связанные с ней скрипты и фильтры продолжают загружаться и в фронтенде, и в админке. Если задача — немного почистить сайт, убрать лишние обращения и не трогать контент, отключение emoji — один из самых безопасных технических шагов.
Важно понимать границу: речь не о «сломать emoji в контенте», а о том, чтобы убрать встроенную проверку совместимости, которая подгружается автоматически. Если у вас есть старые браузеры или специфичные интеграции, сначала проверьте, действительно ли это не нужно.
Когда отключение emoji имеет смысл
Чаще всего это делают на проектах, где уже вычищают технический шум: отключают лишние скрипты, сокращают число запросов и приводят фронтенд к более предсказуемому виду. Сам по себе эффект небольшой, но в сумме с другими правками он помогает.
Типичные сценарии
- сайт не использует emoji в интерфейсе и контенте;
- нужно убрать один-двa лишних HTTP-запроса из head;
- тема или сборка уже оптимизируют фронтенд, а встроенный emoji-скрипт остаётся;
- нужно уменьшить количество встроенных действий WordPress без риска для контента.
Диагностика: что именно грузит WordPress
Перед правкой проверьте, есть ли на странице подключение wp-emoji-release.min.js и inline-скрипт, который WordPress вставляет для определения поддержки emoji. Это можно увидеть в исходном коде страницы или в DevTools на вкладке Network.
Если вы видите такие признаки, значит отключение действительно сработает:
- в HTML есть ссылка на
wp-emoji-release.min.js; - в
<head>присутствует inline-скрипт с проверкой canvas; - в админке и на фронтенде поведение одинаковое, потому что это ядро WordPress, а не тема.
Если скрипта нет, значит его уже убрали тема, плагин оптимизации или MU-plugin. В таком случае повторно отключать нечего.
Пошаговое решение через functions.php или MU-plugin
Самый надёжный способ — снять стандартные действия WordPress, которые отвечают за emoji. Лучше делать это не в активной теме, а в небольшом MU-plugin, чтобы правка не потерялась при обновлении темы.
Вариант 1: код в MU-plugin
Создайте файл wp-content/mu-plugins/disable-emojis.php. Если папки mu-plugins нет, создайте её вручную.
<?php
/**
* Plugin Name: Disable Emojis
*/
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-скрипт и стили из фронтенда и админки, а также фильтры, которые WordPress применяет к лентам и письмам.
Вариант 2: через functions.php дочерней темы
Если MU-plugin вам не подходит, тот же код можно добавить в functions.php дочерней темы. Но для долгоживущих проектов это менее удобно: при смене темы правка исчезнет.
<?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' );
} );Что выбрать: код, плагин или готовую оптимизацию
Если на сайте уже стоит плагин для технической чистки, иногда проще включить отключение emoji там. Но если нужен точечный контроль, код надёжнее: он делает ровно то, что вы прописали, и не тянет лишние настройки.
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в MU-plugin | Стабильно, не зависит от темы, легко проверить | Нужно один раз аккуратно добавить файл |
| functions.php дочерней темы | Быстро внедрить | Слетает при смене темы, хуже для поддержки |
| Плагин оптимизации | Удобно, если уже используется | Может быть лишний функционал и конфликт настроек |
Если у вас уже есть плагин уровня Clearfy Pro, проверьте, не включена ли там похожая опция. Дублировать одну и ту же оптимизацию в двух местах не стоит: потом сложнее понять, что именно отключило скрипт.
Проверка результата после внедрения
После добавления кода откройте главную страницу и любую внутреннюю страницу в режиме инкогнито. Дальше проверьте три вещи.
- В исходном коде страницы больше нет
wp-emoji-release.min.js. - В
<head>отсутствует inline-скрипт emoji detection. - В админке редактор и форма комментариев работают как раньше, без ошибок JavaScript.
Если хотите проверить точнее, откройте DevTools → Network и обновите страницу. Запрос к emoji-скрипту должен исчезнуть. Для быстрой проверки по исходнику можно использовать поиск по странице: emoji или wp-emoji.
Частые ошибки и как их исправить
Код добавили, но скрипт остался
Чаще всего причина в том, что код выполняется слишком рано или его добавили не туда. Для снятия стандартных действий WordPress используйте init, как в примере выше. Если код лежит в теме, убедитесь, что это именно активная тема, а не старая копия.
Отключили emoji, но в письмах или RSS что-то изменилось
Это бывает, если убрали только фронтенд-часть и забыли фильтры wp_staticize_emoji и wp_staticize_emoji_for_email. Для полного отключения нужны обе группы правок.
Появились конфликты с плагином оптимизации
Некоторые плагины уже умеют отключать emoji сами. Если включить это и в плагине, и в коде, ничего критичного обычно не случится, но диагностика станет мутной. Оставьте один источник правды: либо код, либо настройку в плагине.
Удалили не только emoji, но и нужные стили
Не стоит вручную вырезать все стили из wp_head без понимания, что именно делает каждый хук. В примере выше удаляются только связанные с emoji действия и фильтры, а не весь набор стандартных подключений WordPress.
Практические советы по безопасности и производительности
Перед изменением кода сделайте резервную копию файла или коммит в git, если проект под версионным контролем. Это особенно важно, если вы правите functions.php на живом сайте.
- не отключайте emoji наугад в продакшене без проверки исходника;
- не смешивайте несколько оптимизаций в одном большом куске кода;
- если используете кэш-плагин, очищайте кэш после изменений;
- проверяйте не только главную страницу, но и записи, страницы, архивы и админку;
- если сайт обслуживает старую аудиторию или нестандартные устройства, тестируйте в реальных браузерах, а не только в Chrome.
Если задача шире и вы параллельно чистите сайт от технического шума, полезно смотреть на отключение лишних функций в комплексе: дубли, встроенные скрипты, ненужные эмодзи, лишние метаданные. Но каждую правку лучше проверять отдельно, иначе потом трудно понять, что именно дало эффект.