Убираем лишние скрипты в WordPress: что нужно знать заранее
За 30–40 минут можно найти скрипты, которые плагины грузят на каждой странице без нужды, и отключить их точечно, не сломав сайт. Что подготовить заранее и как проверить результат на WordPress 6.x.

За 30–40 минут вы найдёте скрипты, которые плагины и тема грузят на каждой странице без необходимости, и отключите их точечно. Например, скрипт формы обратной связи останется только на странице контактов, а служебный скрипт эмодзи уйдёт из шапки. Инструкция написана для WordPress 6.x. Вся правка умещается в один небольшой PHP-файл, файлы темы и плагинов не меняются.
Что нужно иметь до начала
- Права администратора WordPress и доступ к файлам сайта по SFTP или через файловый менеджер хостинга. Без доступа к файлам шаг 3 не выполнить.
- Свежую резервную копию файлов и базы. Если хостинг даёт тестовую копию сайта, работайте на ней.
- Браузер с инструментами разработчика: Chrome, Firefox или Edge.
- Список страниц, которые приносят деньги: форма заявки, корзина, оформление заказа. Их вы будете проверять после каждого изменения.
Главное правило: убирайте скрипты по одному. Если отключить три сразу и что-то сломается, вы не поймёте, какой из них был нужен.
Пояснение к термину. Handle (идентификатор скрипта) — короткое имя, под которым плагин или тема регистрирует скрипт в WordPress, например contact-form-7. По этому имени скрипт отключают.
Скрипт отключают по имени, а не по внешнему виду страницы. Сначала выясните, кто его подключил, и только потом решайте, нужен ли он здесь.
Пошаговая инструкция
- Замерьте исходное состояние. Откройте главную в окне инкогнито, нажмите F12, перейдите на вкладку Network, включите фильтр JS и отметьте Disable cache. Обновите страницу. Проверка: внизу вкладки видна строка с числом запросов и объёмом данных. Запишите оба значения.
- Найдите handle лишних скриптов. Нажмите Ctrl+U и найдите в исходнике теги <script>. У скриптов, подключённых средствами WordPress, в теге есть атрибут id, который оканчивается на -js. Отбросьте этот суффикс: из contact-form-7-js получится handle contact-form-7. Путь в адресе скрипта (/wp-content/plugins/имя-плагина/) подскажет, кому он принадлежит. Проверка: у вас есть список из нескольких handle, и напротив каждого указан плагин или тема.
- Создайте файл с правилами. В каталоге wp-content создайте папку mu-plugins, если её нет, а в ней файл cleanup-scripts.php. Файлы из этой папки WordPress загружает сам, и они не зависят от активной темы, поэтому правка переживёт её смену. Вставьте код из блока ниже, замените contacts на слаг своей страницы, а contact-form-7 на найденный handle. Проверка: сайт открывается без ошибок, а в разделе «Плагины» на вкладке «Must-Use» виден Cleanup Scripts.
- Повторите замер. Снова откройте главную с отключённым кэшем. Проверка: в списке запросов нет скрипта формы, в исходнике страницы нет строки wpemoji, число запросов стало меньше. Затем откройте страницу контактов: скрипт формы там должен остаться.
- Пройдите ключевые сценарии. Отправьте тестовую заявку, откройте мобильное меню, добавьте товар в корзину, если она есть. Держите открытой вкладку Console. Проверка: красных ошибок нет, всё работает так же, как до правок.
Код для шага 3
Файл рассчитан на WordPress 6.x. Сначала проверьте его на копии сайта.
<?php
/**
* Plugin Name: Cleanup Scripts
* Description: Отключает лишние скрипты на страницах, где они не нужны.
* Version: 1.0.0
*/
// Прямой запуск файла не нужен
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// Убираем скрипт определения эмодзи из шапки на всех страницах
add_action( 'init', 'cleanup_scripts_remove_emoji' );
function cleanup_scripts_remove_emoji() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
}
// Отключаем скрипт и стиль формы везде, кроме страницы контактов
add_action( 'wp_enqueue_scripts', 'cleanup_scripts_dequeue', 100 );
function cleanup_scripts_dequeue() {
if ( is_page( 'contacts' ) ) {
return; // здесь форма нужна, ничего не трогаем
}
wp_dequeue_script( 'contact-form-7' );
wp_dequeue_style( 'contact-form-7' );
}
Цена правки с эмодзи: в очень старых браузерах смайлики могут отображаться квадратами. Стили эмодзи отключаются отдельным вызовом, его имя зависит от версии WordPress, сверьтесь с документацией вашей версии. Функция wp_dequeue_script убирает только прямой запрос на подключение. Если другой скрипт зависит от отключённого, WordPress всё равно загрузит его как зависимость, и это защищает от случайных поломок.
Что куда вписать
| Параметр | Что вписать | Пример |
|---|---|---|
| Путь к файлу | Каталог mu-plugins внутри wp-content | wp-content/mu-plugins/ |
| Имя файла | Любое, расширение .php | cleanup-scripts.php |
| Handle | Значение id тега script без суффикса -js | contact-form-7 |
| Условие | Слаг страницы, где скрипт нужен | is_page( 'contacts' ) |
| Приоритет хука | Число больше, чем у подключающего плагина. В большинстве случаев хватает 100 | 100 |
Если не получилось
- «There has been a critical error on this website.» В файле синтаксическая ошибка: потерянная скобка или кавычка. Удалите cleanup-scripts.php по SFTP, и сайт вернётся. Чтобы увидеть причину, добавьте в wp-config.php строки
define( 'WP_DEBUG', true );иdefine( 'WP_DEBUG_LOG', true );, затем откройте wp-content/debug.log. После отладки верните WP_DEBUG в false. - «Parse error: syntax error, unexpected end of file». Скопирована только часть кода. Вставьте блок целиком, включая закрывающие фигурные скобки.
- Скрипт остался в исходнике. Проверьте, что handle совпадает с id без -js. Если совпадает, скрипт, скорее всего, вписан тегом прямо в шаблон темы, и wp_dequeue_script тут не поможет: искать нужно в файлах темы. Ещё одна причина: кэш. Очистите кэш плагина и CDN.
- В исходнике нет id с суффиксом -js. Кэш-плагин склеил скрипты в один файл. На время поиска отключите объединение JS, найдите handle и включите обратно.
- «Uncaught ReferenceError: jQuery is not defined» в консоли. Что-то на странице ждёт jQuery, а он не загрузился. Верните в код последний убранный handle и проверяйте снова.
- Форма есть, но не отправляется. Скрипт убран там, где форма встроена, например в подвале на всех страницах. Расширьте условие в is_page или уберите этот handle из списка.
Что делать дальше
Добавляйте по одному handle в неделю и каждый раз повторяйте шаги 4 и 5. После обновления плагинов проверяйте сайт заново: имя handle может измениться, и правило тихо перестанет работать.
Результат измерьте в PageSpeed Insights: посмотрите аудит про неиспользуемый JavaScript до и после. Скрипты аналитики и менеджеры тегов — отдельная тема, здесь мы их не трогали.
Проверка рекламы на риски: Что в макете вызовет вопросы ФАС: превосходные степени, сравнения, обещания результата, маркировка.
Спросить за 40 ₽Источники: WordPress Developer Resources: wp_dequeue_script(), WordPress Developer Resources: хук wp_enqueue_scripts
Частые вопросы
Можно ли обойтись без кода, плагином?
А если у меня другая версия WordPress?
Я добавил код, а скрипт всё равно грузится. Что проверить?
Можно ли убрать jQuery, раз он тяжёлый?
Что может пойти не так на боевом сайте?
Правка пропадёт после смены темы?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.