Если сайт на WordPress стал грузить лишние CSS и JS, сначала проверьте не тему и не кэш, а стандартные вещи ядра: emoji-скрипт, стили и скрипты блок-редактора на фронтенде, а также встроенные эмбеддинги. Это типичная причина «мелкого мусора» в исходнике, из-за которого растёт число запросов и усложняется оптимизация.
Ниже — рабочий сценарий: как понять, что именно лишнее, как отключить это безопасно и как проверить, что ничего не сломалось.
Что именно обычно мешает
В чистом WordPress на фронтенде часто остаются элементы, которые не нужны большинству сайтов:
- скрипт emoji для старых браузеров;
- стили и скрипты, связанные с Gutenberg, если на сайте почти нет блоков в контенте;
- встроенные oEmbed-скрипты, если вы не используете автоподстановку видео и постов;
- лишние глобальные стили темы, которые дублируют друг друга;
- подключения плагинов, которые можно убрать точечно, а не «чистить всё подряд».
Важно: не стоит отключать всё сразу. Сначала нужно понять, что реально загружается на страницах, где проблема заметна.
Диагностика: как найти лишние подключения
Откройте страницу сайта в браузере и посмотрите исходный код или вкладку Network в DevTools. Ищите файлы с названиями вроде wp-emoji-release.min.js, wp-block-library.css, wp-block-library-theme.css, wp-embed.min.js. Если сайт не использует блоки на фронтенде, часть этих файлов может быть лишней.
Ещё один практичный способ — временно включить просмотр списка подключений через плагин для аудита ассетов или через Query Monitor. Но даже без плагинов можно быстро проверить исходник страницы и понять, что повторяется на всех шаблонах.
Когда отключение уместно
Сценарий подходит, если:
- сайт в основном на классическом редакторе или на кастомных шаблонах;
- блоки Gutenberg используются только в админке, а не как основа фронтенда;
- встроенные эмбеддинги не нужны;
- вы хотите убрать лишние запросы без тяжёлой оптимизации через minify-агрегаторы.
Если у вас сайт на блок-теме или активно используются блоки на фронтенде, отключать wp-block-library нужно осторожно: можно сломать внешний вид контента.
Пошаговое решение через functions.php или мини-плагин
Лучше не править ядро и не вносить изменения напрямую в файлы темы, если тема обновляется. Безопаснее добавить код в дочернюю тему или в небольшой mu-plugin.
1. Отключаем emoji
Этот код убирает фронтенд- и админские emoji-скрипты и стили. Если у вас нет необходимости поддерживать старые сценарии, это обычно безопасно.
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' );
} );2. Убираем встроенный embed-скрипт
Если вы не используете автоматическую вставку контента через oEmbed, можно отключить этот скрипт на фронтенде.
add_action( 'wp_footer', function () {
wp_deregister_script( 'wp-embed' );
}, 1 );На практике удобнее делать это через wp_enqueue_scripts, чтобы не зависеть от того, как тема выводит футер. Но если у вас уже есть собственная логика подключения скриптов, проверьте, не нужен ли wp-embed для конкретных шаблонов.
3. Убираем стили блоков, если они не нужны на фронтенде
Это самый спорный пункт. Если сайт не использует блоки в контенте, можно попробовать отключить базовые стили библиотеки блоков. Но сначала проверьте страницу с реальным контентом: заголовки, списки, кнопки, цитаты, колонки.
add_action( 'wp_enqueue_scripts', function () {
wp_dequeue_style( 'wp-block-library' );
wp_dequeue_style( 'wp-block-library-theme' );
wp_dequeue_style( 'global-styles' );
}, 100 );Если после этого у вас «поехали» отступы, кнопки или колонки, значит тема или контент завязаны на эти стили. Тогда лучше не отключать их глобально, а решать задачу точечно по шаблонам.
Сравнение подходов: плагин, код, компромисс
| Подход | Плюсы | Минусы | Когда выбирать |
|---|---|---|---|
| Код в дочерней теме / mu-plugin | Точно контролируете, что отключено | Нужна проверка после обновлений | Если нужен предсказуемый результат |
| Оптимизационный плагин | Удобно для неразработчика | Легко переборщить с отключениями | Если на сайте много точечных исключений |
| Ничего не отключать | Минимум риска | Остаётся лишний мусор в фронтенде | Если сайт уже быстро работает и правок мало |
Если нужен более широкий набор инструментов для чистки WordPress, обычно удобнее смотреть в сторону решений, где можно отключать отдельные элементы без ручного кода. Например, в Clearfy Pro есть функции для удаления части системного мусора и SEO-настроек: https://wpshop.ru/plugins/clearfy?utm_source=wp-shablon.ru&utm_medium=article&utm_campaign=otklyuchit-emojy-gutenberg-skripty-v-wordpress
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой главной страницы. Нужно пройтись по нескольким типам страниц:
- главная;
- запись блога;
- страница с таблицей или кнопками;
- страница с встраиванием видео или карты, если они есть;
- страница поиска или архив.
Проверьте следующее:
- в исходнике больше нет
wp-emoji-release.min.js; - не подгружается
wp-embed.min.js, если он вам не нужен; - на страницах без блоков не тянутся лишние стили блоков;
- кнопки, списки, цитаты и колонки выглядят как раньше;
- в консоли браузера нет ошибок JavaScript.
Если используете Lighthouse или PageSpeed Insights, сравнивайте не только баллы, а список загружаемых ресурсов. Цель здесь — убрать лишние подключения, а не «догнать цифру» любой ценой.
Частые ошибки и как их исправить
Отключили стили блоков на сайте, где они реально используются
Это самая частая проблема. Симптомы: ломаются отступы, кнопки становятся «голыми», колонки перестают работать. Решение простое: вернуть wp-block-library и global-styles, а затем уже искать другие источники нагрузки.
Удалили скрипт, который нужен теме или плагину
Некоторые темы и плагины используют стандартные скрипты WordPress как зависимость. Если после отключения что-то перестало открываться или переключаться, проверьте, не завязан ли компонент на wp-embed или на стили блоков.
Внесли код в родительскую тему
После обновления тема перезапишется, и оптимизация исчезнет. Для таких правок лучше использовать дочернюю тему или mu-plugin.
Смешали оптимизацию с минификацией
Если вы одновременно отключаете скрипты, объединяете CSS и включаете агрессивный кэш, потом сложно понять, что именно сломало страницу. Делайте изменения по одному и проверяйте результат после каждого шага.
Чек-лист перед публикацией изменений
- Сделали резервную копию файлов и базы.
- Проверили, используются ли блоки Gutenberg на фронтенде.
- Убедились, что emoji и embed-скрипты действительно не нужны.
- Протестировали главную, запись и шаблон с типографикой.
- Открыли сайт в инкогнито и очистили кэш плагина/сервера/CDN.
- Проверили HTML-исходник и консоль браузера.
Когда лучше не отключать вручную
Если у вас сложная тема, много плагинов и несколько типов контента, ручное отключение может занять больше времени, чем даст пользы. В таких случаях удобнее использовать инструмент, где можно включать и выключать отдельные оптимизации поэтапно, а не править код на каждом сайте отдельно.
Для разработчика это обычно вопрос контроля: если нужен точечный результат — код. Если нужен повторяемый процесс на нескольких проектах — плагин с понятными переключателями и возможностью быстро откатить изменения.