Если в проекте важны чистый HTML, меньше лишних запросов и предсказуемая загрузка фронтенда, emoji-скрипты WordPress часто оказываются первым кандидатом на удаление. Они подключаются автоматически, даже если сайт не использует встроенную поддержку эмодзи в старом виде. На небольшом блоге это может быть не критично, но на нагруженном сайте или в аккуратно собранной теме лишние подключения лучше убрать осознанно.
Задача здесь не в том, чтобы «оптимизировать всё подряд», а в том, чтобы убрать конкретный набор скриптов и стилей, не затронув редактор, админку и совместимость с плагинами. Ниже — рабочие варианты: через код, через плагин и с проверкой результата.
Что именно подключает WordPress и где это видно
По умолчанию WordPress может добавлять на фронтенд скрипт wp-emoji-release.min.js и связанные с ним inline-фрагменты. В старых версиях это делалось для поддержки эмодзи в браузерах, где она была ограничена. Сейчас на большинстве сайтов это уже не нужно, но код всё ещё может оставаться в разметке.
Проверять проблему лучше не «на глаз», а в исходнике страницы и в DevTools:
- откройте страницу сайта;
- посмотрите исходный HTML и найдите
emojiилиwp-emoji-release; - вкладка Network покажет, загружается ли отдельный JS-файл;
- если используете кэш-плагин или CDN, проверьте именно очищенную версию страницы.
Когда отключение уместно
Отключать emoji-скрипты имеет смысл, если вы контролируете тему и плагины, а сайт не зависит от старой поддержки эмодзи в очень старых браузерах. Для корпоративных сайтов, медиа и большинства контентных проектов это нормальная техническая чистка. Если у вас есть специфические требования к совместимости или вы работаете с устаревшей средой, сначала проверьте на тестовой копии.
Диагностика: убедитесь, что лишний код действительно приходит из WordPress
Перед правкой полезно понять, не добавляет ли emoji-код тема или плагин поверх стандартного WordPress. Это важно, потому что отключение стандартного механизма не уберёт дубли, если их вставили вручную.
// Быстрая проверка: ищем подключение через стандартные хуки WordPress.
// В теме или плагине может быть свой код, но сначала проверьте базовый источник.
add_action('wp_head', function () {
// временно для отладки, не оставляйте в продакшене
if (current_user_can('manage_options')) {
echo "<!-- debug: wp_head loaded -->\n";
}
});Если в исходнике страницы вы видите именно стандартный набор WordPress, можно отключать его штатным способом. Если же emoji-фрагменты приходят из минификации, объединения файлов или кастомного шаблона, ищите источник в теме, в mu-plugins или в настройках оптимизатора.
Пошаговое решение через код
Самый прозрачный способ — убрать emoji-поддержку через remove_action и фильтры. Этот вариант удобен, когда вы ведёте проект через Git и хотите, чтобы изменение было явно зафиксировано в коде темы или в небольшом кастомном плагине.
<?php
/**
* Отключает emoji-скрипты и стили WordPress на фронтенде.
* Добавьте в functions.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');
});
add_filter('emoji_svg_url', '__return_false');Этот код убирает стандартные подключения и отключает SVG-URL для emoji, если он где-то используется. Обычно этого достаточно, чтобы на фронтенде не было лишних emoji-ресурсов.
Куда лучше вставлять код
- в дочернюю тему, если проект живёт в рамках темы;
- в небольшой mu-plugin, если вы не хотите зависеть от смены темы;
- не в основной файл родительской темы, если тема обновляется через репозиторий или поставщика.
Если сайт обслуживает несколько разработчиков, mu-plugin часто практичнее: он не потеряется при обновлении темы и проще контролируется в деплое.
Альтернатива через плагин: когда код трогать не хочется
Если на проекте уже используется плагин для технической чистки, проще отключить emoji там, чем добавлять ещё один кусок кода. Например, в Clearfy Pro есть набор опций для удаления лишних элементов WordPress, и это удобно, когда вы хотите управлять несколькими оптимизациями из одного места.
| Подход | Плюсы | Минусы |
|---|---|---|
| Код в теме / mu-plugin | Прозрачно, не зависит от интерфейса, удобно для Git | Нужно поддерживать руками |
| Плагин оптимизации | Быстро включить, меньше ручной работы | Зависимость от настроек и лишнего плагина |
| Ничего не делать | Нулевой риск вмешательства | Лишние подключения остаются |
Если у вас уже есть плагин, который отвечает за чистку head и отключение стандартных функций WordPress, не плодите дублирующие решения. Один источник правды лучше двух одинаковых фильтров в разных местах.
Как проверить, что отключение сработало
Проверка должна быть не только визуальной. После внедрения откройте страницу в режиме инкогнито и проверьте три вещи:
- в исходнике страницы больше нет
wp-emoji-release.min.js; - в
<head>не выводятся emoji-стили WordPress; - в Network нет отдельного запроса к emoji-скрипту после полной очистки кэша.
Если используете кэш-плагин, обязательно очистите:
- кэш страницы;
- объектный кэш, если он включён;
- CDN-кэш, если сайт отдаётся через Cloudflare или аналогичный сервис.
Ещё один практический тест — открыть страницу в браузере, где кэш уже пустой, и сравнить исходник до и после. Если код отключён правильно, разница будет видна сразу.
Частые ошибки и как их исправить
Код добавили не туда
Если вставить отключение в файл, который не загружается на фронтенде, результата не будет. Частая ошибка — положить код в шаблон страницы или в файл, который подключается только в админке. Для фронтенда используйте functions.php дочерней темы, mu-plugin или обычный плагин.
Проверили без очистки кэша
После изменения код может продолжать отображаться из-за кэша страницы или CDN. Это не значит, что решение не работает. Сначала очищайте кэш, потом проверяйте исходник и Network.
Отключили стандартный emoji-код, но остался дубликат
Такое бывает, если тема или плагин вставляет собственный emoji-скрипт вручную. В этом случае ищите строку emoji по файлам темы и плагинов. Иногда дубли появляются после установки оптимизатора, который пытается «улучшить» head и добавляет свои inline-скрипты.
Сломали админку ради фронтенда
Не стоит отключать всё без разбора через глобальные фильтры, если вы не понимаете, где они сработают. В приведённом коде отключение затрагивает и админские стили/скрипты emoji, но не трогает остальные функции редактора. Если у вас кастомная сборка админки, тестируйте отдельно.
Практические советы по безопасности и производительности
Отключение emoji — это не «ускоритель в один клик», а небольшая техническая чистка. Но в реальном проекте такие мелочи полезны, если они не ломают совместимость и не создают хаос в кодовой базе.
- не вносите правки прямо в родительскую тему, если она обновляется;
- храните отключения в одном месте, а не в нескольких плагинах;
- после обновления WordPress повторяйте проверку исходника страницы;
- если используете оптимизатор, следите, чтобы он не возвращал emoji-код обратно;
- не отключайте функции, если не можете быстро откатить изменения.
Если вам нужно не только убрать emoji, но и системно почистить WordPress от лишних подключений, имеет смысл смотреть на инструменты, которые управляют техническими дублями и служебными функциями централизованно. Но даже в этом случае проверка исходника и Network остаётся обязательной: интерфейс плагина не гарантирует, что на странице не остался дубликат из темы.
После внедрения сохраните короткий чек-лист в задачу или в README проекта. Для технических мелочей это часто полезнее, чем полагаться на память команды.
- проверить исходник страницы;
- очистить кэш;
- сравнить Network до и после;
- убедиться, что админка работает штатно;
- зафиксировать изменение в репозитории.