После обновления до 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 вырезается, если являетесь - остается, сделано это для того, чтоб не затрагивать плагины, которые на страничках отображаются только админам.
Огромное тебе спасибо, друг!
Полдня курю гугл и нигде не мог найти решения проблемы.
Обновил WP и отключились все плагины,к отрые работают с jQuery: галереи, навигация, вверх.
Что я уже только не пробовал. Отключал/включал плагины, думал, что какой-то один дает конфликт. Помог только твой вариант решения.
Всем советую.
Спасибо!
На здоровье =) Кстати советую еще прочесть вот это: elims.org.ua/blog/jquery-i-mootools-kak-ustranit-konflikt/ . Может jQuery.noConflict() тоже поможет. Если вдруг придется вернуть обратно jquery 1.10.2
Спасибо, Владимир!
Некоторые люди пол дня «курят» google, а я уже недели две :)
Но правда добавление кода в functions.php меня всеравно не спасло, пришлось закомментировать строки отвечающие за вывод скриптов в файле wp-includes/script-loader.php.
Хотелось-бы узнать, ведь как-то можно вывести эти скрипты в футер, что-бы не мешались?
Max, может добавление кода не спасло так, как он не был вставлен между открывающим и закрывающим тегом php-кода?
Не совсем понял какие именно скрипты вывести в футер и как они мешаются?
Владимир, имею ввиду чтобы не мешались в хедере между тегами , так-как PageSpeed говорит, что все строки отвечающие за вывод скриптов нужно перенести в футер.
А по поводу кода, поставил между
Так-же пробовал от сюда aahacreative.com/2013/08/05/remove-jquery-migrate-wordpress-36/ тоже не помогло :)
Max, так возьмите и перенесите строку отвечающую за вывод скрипта с файла в header.php в файл footer.php, посмотрите что получится =) Не забудьте сделать резервную копию.
Владимир, к сожалению дkя меня это не очень просто, так как за вывод всего безобразия в теге head отвечает функция wp_head();
Вот и ищю информацию как безболезненно перенести подключение скриптов и CSS в wp_footer
Но благодаря Вашей статье появились некоторые продвижения и новые мысли :)
Доброго времени суток!
У меня такой вопрос:
В общем ситуация такая..я скачал мне понравившийся шаблон для сайта..а у него все работает на старой jquery1.3.2, можно как то перенести на новую?
Заранее благодарю за ответ.
Альбет, здравствуйте. Попробуйте в шаблоне заменить обращение к старой jquery на новую, может будет работать. А так я не интересовался поддерживается ли в jquery обратная совместимость или нет и какие принципиальные различия между версиями.
Не забудьте перед изменениями сделать резервные копии файлов и базы данных.
Владимир, а у меня почему-то ничего не пропало когда я все так сделала как у вас написано (всеравно в хедере есть jQuery-ссылки). помогите разобраться почему и как это исправить?
И когда я пробовала закомментировать эти строки как у Вас написано — они то естественно с кода пропадали, но на админке тогда елементы многие не работали и кнопки на админке тоже отказывались работать(некоторые). Почему? и как это исправить? подскажите пожалуйста..
Виктория, мой совет — лучше не отключайте jQuery, сейчас на него слишком много завязано. Я тоже отказался от этой практики =)
Спасибо за скрипт, просто добавил его и проблема в developers.google.com/speed/pagespeed/insights/ пропала, но зато есть другие вопросы.