На небольших и средних сайтах WordPress часто тащит на фронтенд лишние ресурсы: emoji-скрипты, стили и Dashicons для посетителей, которым они не нужны. Это не «магическая оптимизация», а конкретная чистка лишних запросов и байтов. Если тема или плагины не используют эти элементы на публичной части сайта, их можно отключить безопасно — но только после проверки, что админка и редактор продолжают работать как надо.
Когда это действительно имеет смысл
Отключать emoji и публичные Dashicons стоит не ради абстрактной «скорости», а когда вы видите, что:
- на главной и внутренних страницах загружаются
wp-emoji-release.min.jsи связанные inline-скрипты; - внешний CSS от
dashicons.min.cssприходит для обычных посетителей, хотя иконки нужны только в админке; - вы уже убрали тяжелые плагины, но в отчётах PageSpeed/Lighthouse всё равно висит лишняя мелочь, которая мешает добрать нормальный результат;
- тема не использует Dashicons на фронтенде, а иконки в меню, кнопках и виджетах сделаны другими способами.
Диагностика проблемы: что именно грузится и где
Сначала проверьте, действительно ли ресурсы есть на публичной части сайта. Откройте исходный код страницы или вкладку Network в DevTools и найдите:
wp-emoji-release.min.js;dashicons.min.css;- inline-скрипт с настройками emoji, который WordPress добавляет автоматически;
- подключения от темы или плагинов, которые завязаны на Dashicons и могут сломаться при отключении.
Если вы видите Dashicons только в админке, это нормально. Их задача — работать в панели, а не на фронтенде. Проблема возникает, когда тема по привычке подтягивает их на всех страницах.
Как быстро проверить без кода
Откройте страницу сайта в режиме инкогнито и посмотрите список CSS/JS в DevTools. Если у вас есть доступ к PageSpeed Insights или WebPageTest, сравните список запросов до и после изменений. Это полезно, потому что иногда ресурс уже закеширован в браузере и кажется, что ничего не изменилось.
Пошаговое решение через functions.php или мини-плагин
Самый предсказуемый вариант — добавить код в дочернюю тему или в небольшой mu-plugin. Так вы не потеряете изменения после обновления темы.
Ниже пример, который отключает emoji-скрипты WordPress и убирает Dashicons с фронтенда для незалогиненных пользователей:
<?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' );
} );
add_action( 'wp_enqueue_scripts', function () {
if ( ! is_user_logged_in() ) {
wp_dequeue_style( 'dashicons' );
wp_deregister_style( 'dashicons' );
}
}, 100 );Здесь есть важная деталь: Dashicons снимаются только у незалогиненных посетителей. Если вы авторизованы, WordPress и редактор могут продолжать использовать их в интерфейсе, и это нормально. Такой подход снижает риск сломать админку при тестировании.
Если тема сама подключает Dashicons
Иногда проблема не в ядре WordPress, а в теме или плагине. Тогда одного wp_dequeue_style() может быть недостаточно: ресурс подключается повторно другим кодом. В этом случае ищите в теме вызовы wp_enqueue_style( 'dashicons' ) или похожие регистрации и убирайте их точечно. Если код чужой и обновляется отдельно, лучше не править его напрямую, а переопределить подключение через дочернюю тему или собственный плагин.
Сравнение подходов: плагин, код, компромисс
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Код в functions.php | Есть дочерняя тема и нужен точечный контроль | Минимум зависимостей, легко проверить | Можно потерять при смене темы, если не использовать child theme |
| Мини-плагин / mu-plugin | Оптимизация должна жить отдельно от темы | Не зависит от темы, удобно переносить | Нужно один раз аккуратно оформить файл |
| Оптимизирующий плагин | Нужна панель настроек без кода | Быстрее внедрить, удобно для редактора | Может отключать лишнее слишком широко и конфликтовать с темой |
Если у вас уже стоит плагин для технической чистки сайта, например Clearfy Pro, проверьте, не дублирует ли он эти действия. Два решения, которые трогают одни и те же хуки, иногда мешают друг другу.
Проверка результата после внедрения
После добавления кода не ограничивайтесь визуальной проверкой. Сделайте три шага:
- Откройте страницу сайта в приватном окне и убедитесь, что в исходнике больше нет
wp-emoji-release.min.js. - Проверьте, что
dashicons.min.cssне грузится для незалогиненного пользователя на фронтенде. - Зайдите в админку, откройте редактор записи и убедитесь, что кнопки, меню и иконки интерфейса работают как раньше.
Если используете кэш-плагин или серверный кэш, очистите его после изменений. Иначе вы будете смотреть на старую версию страницы и сделаете неверный вывод.
Что считать нормальным результатом
Нормально, если:
- на фронтенде исчезли лишние запросы к emoji;
- Dashicons остались в админке, но пропали у гостей сайта;
- редактор Gutenberg не потерял элементы управления;
- в консоли браузера нет ошибок, связанных с отсутствующими стилями или скриптами.
Частые ошибки и как их исправить
Ошибка 1: отключили Dashicons без проверки темы. Некоторые темы используют их в мобильном меню, кнопках соцсетей или иконках навигации. Если после отключения пропали значки, верните стиль и ищите, где именно он нужен.
Ошибка 2: вставили код в родительскую тему. После обновления изменения исчезнут. Переносите код в дочернюю тему или mu-plugin.
Ошибка 3: отключили emoji только через один хук. WordPress добавляет emoji в нескольких местах. Если убрать только wp_head, часть ресурсов может остаться в стилях, RSS или email.
Ошибка 4: тестировали под своей учётной записью. Авторизованный пользователь видит не тот же набор ресурсов, что обычный посетитель. Проверяйте в инкогнито.
Ошибка 5: забыли про кэш. После оптимизации старые файлы могут продолжать отдаваться CDN, сервером или плагином кэширования.
Практические советы по безопасности и производительности
Не отключайте всё подряд «для ускорения». Любая оптимизация WordPress должна быть обратимой. Перед правкой сохраните рабочую копию файла или сделайте коммит, если сайт в Git. Если используете мини-плагин, держите его в отдельной папке и не смешивайте с бизнес-логикой темы.
Для сайтов с активной редакцией контента полезно проверять изменения на staging-копии. Это особенно важно, если у вас много авторов и кто-то работает в классическом редакторе, а кто-то — в Gutenberg. Внешне отключение emoji и Dashicons кажется безобидным, но конфликт чаще всего проявляется не сразу, а на конкретной странице или в конкретном шаблоне.
Если после чистки вы хотите продолжить техническую оптимизацию, логично посмотреть на другие лишние подключения: эмодзи, embeds, ненужные стили плагинов, тяжелые шрифты и неиспользуемые блоки. Но каждый следующий шаг лучше делать отдельно, чтобы было понятно, что именно дало эффект.
Короткий чек-лист перед публикацией
- Проверили, что emoji-скрипты реально есть на фронтенде.
- Добавили отключение в дочернюю тему или mu-plugin.
- Не тронули админку и редактор без необходимости.
- Очистили кэш сайта, CDN и браузера.
- Сравнили исходный код страницы до и после.
- Открыли сайт в инкогнито и убедились, что ничего не сломалось.
Если нужна более широкая техническая чистка, удобно делать её не вручную по кускам, а через один контролируемый слой настроек. В таком случае отдельные функции отключения лишних ресурсов, дублей и служебных скриптов проще держать в одном месте, а не размазывать по теме и плагинам.
}