WordPress: Отключение jquery 1.10.2

После обновления до wordpress 3.6 я заметил что у меня на блогах в исходном коде страниц объявляются библиотеки jquery таким образом:

<script type='text/javascript' src='https://elims.org.ua/wp-includes/js/jquery/jquery.js?ver=1.10.2'>
</script>
<script type='text/javascript' src='https://elims.org.ua/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'>
</script>

При загрузке страницы это несет за собой загрузку дополнительных 100 кб и два запроса. Раз добавили, значит видимо для чего-то надо, но для кнопки вверх вниз я ручками подключил себе более новую версию библиотеки:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
</script>

У тут я задался вопросом: "Раз у меня используется более новая версия библиотеки  jquery, то нужны ли эти две строчки или можно их отключить для более высокой скорости загрузки блога?".

Решил таки отключить и посмотреть что с этого получиться.

Код который отвечает за подключение этих библиотек находиться в файле wp-includes/script-loader.php:

$scripts->add( 'jquery', false, array( 'jquery-core', 'jquery-migrate' ), '1.10.2' );
$scripts->add( 'jquery-core', '/wp-includes/js/jquery/jquery.js', array(), '1.10.2' );
$scripts->add( 'jquery-migrate', "/wp-includes/js/jquery/jquery-migrate$suffix.js", array(), '1.2.1' );

Для его отключения можно было бы его закомментировать, но такой подход мне не понравился. Ведь при обновлении wordpress'а скорее всего этот файл перезапишется и придется снова в нем повторять те же действия.

Потому на странице aahacreative.com/2013/08/05/remove-jquery-migrate-wordpress-36 был найден другой способ: в файле functions.php нужного шаблона я добавил  код который тоже отключает эти библиотеки:

// start: отключаем jquery 1.10.2
add_filter( 'wp_default_scripts', 'dequeue_jquery_migrate' );
function dequeue_jquery_migrate( &$scripts){
  if(!(is_admin_bar_showing())){
    $scripts->remove( 'jquery');
    //$scripts->add( 'jquery', false, array( 'jquery-core' ), '1.10.2? );
  }
}
// end: отключаем jquery 1.10.2

После этого пробежался по плагинам которые как-либо участвуют в выводе контента\кода на странице и убедился что все работает.

UPD: Кстати заметил что после отключения jquery 1.10.2 некоторые плагины таки могут перестать полноценно работать. У меня нашелся один такой плагин - Crayon Syntax Highlighter, он разрисовывает исходный код в разные цвета, для более "легкой читаемости", сам плагин работал, но вот настройки к нему не применялись: я указывал не нумеровать строки, он же все равно их отображал с нумерацией, причиной оказалось отключение jquery 1.10.2. Правда позже я все равно отказался от плагина Crayon Syntax Highlighter - он слишком сильно нагружает wordpress при более-менее активной посещаемости.

Посему после отключения jquery 1.10.2  настоятельно рекомендую проверить работоспособность каждого плагина который хоть как-то участвует в выводе информации на страничку. При проверке обязательно разлогиньтесь  в wordpress, так как строка  "!(is_admin_bar_showing()" в выше приведенном коде проверяет на то, являетесь ли вы админом или нет. Если не являетесь - jquery 1.10.2 вырезается, если являетесь - остается, сделано это для того, чтоб не затрагивать плагины, которые на страничках отображаются только админам.

Понравилось? =) Поделись с друзьями:

Обсуждение записи “WordPress: Отключение jquery 1.10.2”

  1. kayros (kayrosblog.ru) says:

    Огромное тебе спасибо, друг!
    Полдня курю гугл и нигде не мог найти решения проблемы.
    Обновил WP и отключились все плагины,к отрые работают с jQuery: галереи, навигация, вверх.
    Что я уже только не пробовал. Отключал/включал плагины, думал, что какой-то один дает конфликт. Помог только твой вариант решения.
    Всем советую.
    Спасибо!

  2. Владимир Демянович (elims.org.ua) says:

    На здоровье =) Кстати советую еще прочесть вот это: elims.org.ua/blog/jquery-i-mootools-kak-ustranit-konflikt/ . Может jQuery.noConflict() тоже поможет. Если вдруг придется вернуть обратно jquery 1.10.2

  3. Max (kyposha.ru) says:

    Спасибо, Владимир!
    Некоторые люди пол дня «курят» google, а я уже недели две :)

    Но правда добавление кода в functions.php меня всеравно не спасло, пришлось закомментировать строки отвечающие за вывод скриптов в файле wp-includes/script-loader.php.

    Хотелось-бы узнать, ведь как-то можно вывести эти скрипты в футер, что-бы не мешались?

  4. Владимир Демянович (elims.org.ua) says:

    Max, может добавление кода не спасло так, как он не был вставлен между открывающим и закрывающим тегом php-кода?

    Не совсем понял какие именно скрипты вывести в футер и как они мешаются?

  5. Max (kyposha.ru) says:

    Владимир, имею ввиду чтобы не мешались в хедере между тегами , так-как PageSpeed говорит, что все строки отвечающие за вывод скриптов нужно перенести в футер.

    А по поводу кода, поставил между
    Так-же пробовал от сюда aahacreative.com/2013/08/05/remove-jquery-migrate-wordpress-36/ тоже не помогло :)

  6. Владимир Демянович (elims.org.ua) says:

    Max, так возьмите и перенесите строку отвечающую за вывод скрипта с файла в header.php в файл footer.php, посмотрите что получится =) Не забудьте сделать резервную копию.

  7. Max (kyposha.ru) says:

    Владимир, к сожалению дkя меня это не очень просто, так как за вывод всего безобразия в теге head отвечает функция wp_head();
    Вот и ищю информацию как безболезненно перенести подключение скриптов и CSS в wp_footer
    Но благодаря Вашей статье появились некоторые продвижения и новые мысли :)

  8. Альбет says:

    Доброго времени суток!
    У меня такой вопрос:
    В общем ситуация такая..я скачал мне понравившийся шаблон для сайта..а у него все работает на старой jquery1.3.2, можно как то перенести на новую?

    Заранее благодарю за ответ.

  9. Владимир Демянович (elims.org.ua) says:

    Альбет, здравствуйте. Попробуйте в шаблоне заменить обращение к старой jquery на новую, может будет работать. А так я не интересовался поддерживается ли в jquery обратная совместимость или нет и какие принципиальные различия между версиями.

    Не забудьте перед изменениями сделать резервные копии файлов и базы данных.

  10. Виктория (www.assay.in.ua) says:

    Владимир, а у меня почему-то ничего не пропало когда я все так сделала как у вас написано (всеравно в хедере есть jQuery-ссылки). помогите разобраться почему и как это исправить?

  11. Виктория (www.assay.in.ua) says:

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

  12. Владимир Демянович (elims.org.ua) says:

    Виктория, мой совет — лучше не отключайте jQuery, сейчас на него слишком много завязано. Я тоже отказался от этой практики =)

  13. Юрий (servicewifi.ru) says:

    Спасибо за скрипт, просто добавил его и проблема в developers.google.com/speed/pagespeed/insights/ пропала, но зато есть другие вопросы.

Обсудить