Диагностика проблемы: избыточная загрузка скриптов и стилей в WordPress
В типовой установке WordPress и тем часто подключается большое количество CSS и JavaScript, которые не используются на всех страницах сайта. Это замедляет загрузку страниц, увеличивает размер передаваемых данных и ухудшает пользовательский опыт.
Чтобы понять, какие скрипты и стили грузятся, используйте инструменты браузера (Chrome DevTools, вкладка Network и Sources) или плагины для оптимизации, например Query Monitor. Они покажут список всех подключенных ресурсов и их вес.
Пошаговое решение: удаление ненужных скриптов и стилей
1. Определение целевых скриптов и стилей для удаления
Проанализируйте, какие скрипты и стили загружаются на каждой странице, и определите, какие из них не нужны. Например, скрипты WooCommerce не нужны на страницах блога, а стили плагина контактной формы — на страницах магазина.
2. Использование хука wp_enqueue_scripts для удаления
Удаление скриптов и стилей осуществляется с помощью функции wp_dequeue_script и wp_dequeue_style, которые вызываются в хук wp_enqueue_scripts с приоритетом после регистрации скриптов.
Пример кода удаления стиля и скрипта на фронтенде:
function remove_unused_assets() {
if ( !is_page('shop') ) { // Удаляем WooCommerce скрипты и стили на всех страницах, кроме магазина
wp_dequeue_style('woocommerce-general');
wp_dequeue_style('woocommerce-layout');
wp_dequeue_style('woocommerce-smallscreen');
wp_dequeue_script('woocommerce');
wp_dequeue_script('wc-cart-fragments');
}
if ( !is_page('contact') ) { // Удаляем плагины контактной формы на всех страницах, кроме контактной
wp_dequeue_script('contact-form-7');
wp_dequeue_style('contact-form-7');
}
}
add_action('wp_enqueue_scripts', 'remove_unused_assets', 100);
3. Удаление скриптов и стилей из админки
Для ускорения работы админки также можно снять лишние скрипты:
function remove_admin_assets() {
// Убираем скрипт Gutenberg на страницах, где не нужен
$screen = get_current_screen();
if ( $screen && 'post' === $screen->base && 'post' !== $screen->id ) {
wp_dequeue_script('wp-block-editor');
}
}
add_action('admin_enqueue_scripts', 'remove_admin_assets', 100);
Проверка результата после внедрения
- Очистите кеш браузера и кеш сайта, если есть.
- Зайдите на страницы, где удаляли скрипты/стили, откройте DevTools – вкладка Network и убедитесь, что соответствующие файлы не загружаются.
- Проверьте функциональность страниц: все формы, слайдеры, виджеты должны работать корректно.
- Запустите тест скорости через Google PageSpeed Insights или WebPageTest, сравните показатели до и после.
Частые ошибки и как их исправить
- Удаление нужных скриптов: Если после удаления что-то перестало работать, выясните точный
handleскрипта/стиля через Query Monitor или DevTools и отключите только лишнее. - Неправильное условие в if: Используйте функции
is_page(),is_singular(),is_front_page()с точными параметрами, чтобы не лишить нужные страницы скриптов. - Слишком ранний приоритет хука: Используйте приоритет 100 или выше, чтобы убедиться, что скрипты уже зарегистрированы к моменту удаления.
- Кэширование: Иногда изменения не видны из-за кэша. Очистите кэш плагинов (например, W3 Total Cache, WP Super Cache) и браузера.
Практические советы для безопасности и производительности
- Минимизируйте количество подключаемых плагинов: меньше плагинов — меньше скриптов и стилей.
- Используйте асинхронную или отложенную загрузку скриптов: через атрибуты
asyncилиdeferвwp_enqueue_script. - Объединяйте и минифицируйте CSS и JS: с помощью плагинов типа Autoptimize или Clearfy Pro (https://wpshop.ru/plugins/clearfy?utm_source=journalx.ru&utm_medium=article&utm_campaign=kak-udalit-raznye-typeny-skriptov-i-stilej-iz-wordpress-dlya-uluchsheniya-proizvoditelnosti).
- Отслеживайте загрузку ресурсов регулярно: Query Monitor и DevTools — постоянные инструменты диагностики.
Сравнение способов удаления скриптов и стилей
| Способ | Плюсы | Минусы |
|---|---|---|
| Код в functions.php | Точный контроль, бесплатно, не требует плагинов | Требует знаний PHP, возможны ошибки при неправильном условии |
| Плагины оптимизации (Clearfy Pro, Asset CleanUp) | Интерфейс, удобство, настройка без кода, дополнительные опции | Платные версии, нагрузка на админку, возможны конфликты |
| Удаление в теме (header.php/footer.php) | Простое отключение, если скрипты добавлены вручную | Не подходит для скриптов плагинов, требует правки темы |