post
Бесплатная школа YouTube 3.0

Мы уже рассмотрели как отключать CSS-файлы стилей, причем отдельно файлы, подключаемые темой оформления (подробнее тут) и отдельно отключение файлов стилей, подключаемых в плагинах (прочтите тут). А цель у нас одна — уменьшить число запросов к серверу и повысить скорость загрузки сайта.

Однако многие плагины подключают свои файлы js-скриптов. Зачастую нам не нужно, чтобы эти файлы загружались. По крайней мере это точно не нужно на каждой странице сайта — лишние запросы, меньше скорость работы сайта. Поговорим о том, как отключить файлы скриптов, загружаемые различными плагинами WordPress.

1. Определяем, какие скрипты загружаются плагинами.

Для этого используем сервис Pingdom Website Speed Test или PageSpeed.

На картинке ниже мы видим, что лишний скрипт, подключаемый плагином Contact Form 7, загружается на всех страницах сайта:

ненужные скрипты wordpress

При наведении на название скрипта отображается путь, по которому он лежит на сервере — так мы легко можем понять, какой плагин подключает данный скрипт.

Мы решили отключить этот скрипт.

2. Поиск handle-инициатора скрипта, подключаемого плагином WordPress.

Теперь нам нужно найти handle скрипта — это то место, где скрипт подключается. Для этого мы в админ. панели WordPress заходим в «Плагины». находим нужный нам плагин Contact Form 7 и нажимаем кнопку «Изменить».

Открывается текстовый редактор php-файла плагина. Справа отображается список доступных php-файлов. Обычно подключение скрипта происходит в главном файле плагина.

Нам нужно выполнить поиск места подключения скрипта. Для этого нажимаем ctrl+F и в поисковой строке набираем:

wp_enqueue_script

Ищем, где встречается этот код. Если не удалось найти данный код в одном php-файле плагина, смотрим другие php-файлы.

Если так тоже ничего не нашли — воспользуйтесь программой Total Commander — выполните поиск со словами wp_enqueue_script.

Итак, в конце концов мы нашли handle нашего плагина:

contact-form-7

3. Отключение скрипта через функции темы WordPress.

Для этого в админ. панели сайта заходим во «Внешний вид» --> «Редактор» --> Выбираем справа файл функций темы functions.php

В конец файла дописываем такой код:

add_action ('wp_print_scripts','remove_javascript',100);
function remove_javascript () {
    wp_deregister_script ('contact-form-7');
}

Примечание: строка wp_deregister_script ('contact-form-7'); отключает скрипт, в ней требуется указать найденный ранее handle скрипта.

Иногда можно остановиться на этом — просто отключить скрипт. Однако многие плагины без скрипта не могут работать.

4. Подключаем скрипт только на нужных страницах.

Разумеется, если плагин не работает после отключения скрипта, а он обычно и не будет работать, то скрипт нужно подключить, то только на тех страницах, где требуется работа плагина.

Для плагина Contact Form 7 скрипт надо загружать только на странице контактов.

Для этого удаляем ранее добавленный код в файл functions.php и пишем другой код:

add_action ( 'wp_print_scripts', 'my_deregister_javascript', 100 );
function my_deregister_javascript () {
if ( !is_page ('contact') ) {
wp_deregister_script ( 'contact-form-7' );
}
}
Примечание: строка if ( !is_page ('contact') ) { задает ту страницу (по ее относительному url), на которой скрипт будет подключен. На остальных страница скрипт не будет загружаться. В данном случае скрипт будет загружаться только на странице http://www.ваш_сайт/contact/

Обратите внимание, что адрес страницы надо писать с учетом регистра.

5. Проверка сайта после отключения скрипта.

Теперь скрипт отключен. Нужно проверить:

  1. Отключился ли в действительности скрипт — для этого воспользуйтесь сервисом Pingdom и посмотрите лог загрузки — скрипта в нем не должно быть.
  2. Работает ли сайт корректно — проверяем сайт на работоспособность после отключения скрипта — все ли функции сохранились, открываем странички, смотрим.
  3. Проверяем наиболее тщательно, что стало с самим плагином, скрипт которого мы отключили.

Если все в порядке — значит мы сделали все правильно.

Обратите внимание, что мы отключили скрипт через функции темы, а не путем правки файлов самого плагина. Это позволит без проблем обновлять плагин и не бояться, что обновление затрет наши изменения и придется снова что-то отключать и править.

Файлы скриптов и их handle меняются крайне редко при обновлении плагина, поэтому вероятность, что данный способ перестанет работать с очередным обновлением плагина, — крайне низкая.

Бесплатная школа YouTube 3.0

Поделитесь этой записью с друзьями, буду благодарен!

6 thoughts on “WordPress — отключение скриптов

  1. Здравствуйте!

    У меня вопрос: а если несколько плагинов, то как быть? На каждый писать"add_action ( 'wp_print_scripts', 'my_deregister_javascript', 100 ); и т.д." или можно их объединить в этой функции?

    Спрашиваю потому, что с одним плагином у меня получилось, а когда вставил второй — редактироваться не захотел, выдал ошибку.

    Спасибо!

    • Не следует стремиться отключить все стили и скрипты, подключаемые плагинами. Рекомендую сохранять разумный баланс и не тратить слишком много сил на полную оптимизацию сайта. Объединять функции в принципе можно, но работоспособность не гарантирована. Некоторые плагины обращаются в своим скриптам или стилям по прямой ссылке, тогда отключение загрузки этих элементов приведет к ошибке.

      • Спасибо за столь быстрый ответ!

        Гугл настоятельно рекомендует отложить загрузку скриптов. Аналогично Контакт-форм, хотел скрипты плагина Fancybox for WP оставить только на странице, где описываю его работу. Но не получилось. Подскажите,плз, как перенести загрузку скриптов в Футер? Это возможно?

      • Перенесенные в футер скрипты не всегда будут работать корректно. А библиотеку jQuery вообще не стоит переносить в футер в ряде случаев. Если все хе хотите попробовать, поищите плагины по js, csripts, footer, compress, defer и т.д.

  2. 1) Не понял зачем искать handl (у contact form насколько я понимаю — это wpcf7 или я ошибаюсь) и куда его вставлять?

    2) Использую вместе с Contact Form плагин Contact Form 7 Datepicker — как его подключать только на конкретной странице?

  3. Спасибо автору. Скрипт отключился на всех страницах и только остался на странице обратная связь. Загрузка страниц по времени уменьшилась с 5-8 секунд до 1,5 -4 секунды...

Добавить комментарий

Ваш адрес email не будет опубликован.