В современных темах и плагинах WordPress всё чаще используется отложенная загрузка (deferred loading) JavaScript и CSS для ускорения загрузки страниц. Однако иногда это вызывает проблемы с отображением контента или функционалом сайта. В этой статье подробно разберём, как грамотно отключить отложенный запуск в WordPress без ущерба для юзабилити и скорости.
Что такое отложенный запуск скриптов и зачем он нужен
Отложенный запуск — это техника, позволяющая загружать JavaScript и CSS после основной загрузки страницы, чтобы ускорить отображение контента и снизить время первого рендера. Это особенно важно для мобильных пользователей и SEO.
Однако не все скрипты и стили можно безопасно отложить. Некоторые зависят от DOM или должны запускаться сразу, иначе функциональность сломается — кнопки, слайдеры, формы могут перестать работать.
Поэтому иногда требуется отключить deferred loading для отдельных файлов или полностью, если проблемы критичны.
Как проверить, что отложенный запуск вызывает проблемы
Признаки проблем с deferred loading:
- Отсутствие интерактивности на странице после загрузки
- Ошибки JavaScript в консоли браузера вида
Uncaught ReferenceErrorилиTypeError - Проблемы с отображением элементов, зависящих от скриптов
Для проверки удобно использовать инструменты разработчика в браузере, вкладки Network и Console.
Если подозреваете, что отложенная загрузка — источник проблем, попробуйте временно отключить её и проверить, исчезнут ли ошибки.
Способы отключения отложенного запуска в WordPress
1. Отключение deferred loading через functions.php
Если отложенная загрузка реализована через wp_enqueue_script с атрибутом defer или async, можно перезаписать эти параметры.
Пример функции, которая убирает defer для конкретного скрипта:
function wpcheck_remove_defer_attribute( $tag, $handle ) {
if ( 'my-script-handle' === $handle ) {
return str_replace( ' defer', '', $tag );
}
return $tag;
}
add_filter( 'script_loader_tag', 'wpcheck_remove_defer_attribute', 10, 2 );Замените my-script-handle на хэндл нужного скрипта.
Если нужно убрать async, используйте аналогичный подход, меняя строку поиска.
2. Отключение отложенной загрузки CSS
Для стилей deferred loading обычно реализован через lazy load или загрузку через JS. Чтобы отключить, нужно найти и убрать соответствующий код в теме или плагине.
Если используется плагин оптимизации, например Clearfy Pro, в его настройках можно отключить deferred loading CSS.
3. Использование плагинов для управления загрузкой скриптов
Если вы предпочитаете UI, можно использовать плагины:
- Autoptimize — позволяет гибко управлять deferred и async у скриптов и стилей.
- WP Rocket — коммерческий плагин с функцией отключения deferred loading для отдельных ресурсов.
В настройках этих плагинов можно отключить отложенную загрузку для конкретных файлов, что удобно при поиске проблемного скрипта.
Пример: Отключение deferred loading для библиотеки jQuery
Частая проблема — jQuery загружается с defer, а скрипты, зависящие от него, ломаются.
Добавим функцию в functions.php для удаления атрибута defer у jQuery:
function wpcheck_remove_defer_jquery( $tag, $handle ) {
if ( 'jquery-core' === $handle || 'jquery' === $handle ) {
return str_replace( ' defer', '', $tag );
}
return $tag;
}
add_filter( 'script_loader_tag', 'wpcheck_remove_defer_jquery', 10, 2 );Этот код гарантирует, что jQuery загрузится синхронно, предотвращая ошибки инициализации.
Рекомендации по отладке и мониторингу
Для контроля проблем с загрузкой скриптов и стилей можно использовать плагин WPCheck. Он поможет отслеживать ошибки JavaScript и конфликты плагинов в реальном времени.
Также стоит проверить консоль браузера и логи сервера после внесения изменений, чтобы убедиться в отсутствии новых ошибок.
Заключение
Отложенный запуск скриптов и стилей — мощный инструмент для улучшения скорости сайта, но неправильное его использование приводит к проблемам. Важно уметь отключать deferred loading для проблемных ресурсов, не потеряв общую производительность.
Используйте фильтры WordPress для точечной отключения defer/async, плагины для управления загрузкой и мониторьте сайт через WPCheck. Это обеспечит баланс между скоростью и стабильностью.