Niedawno jeden z użytkowników poprosił nas o wskazówki dotyczące optymalizacji wydajności witryny WordPress. Jedną z naszych sugestii było zastąpienie domyślnego skryptu WordPress jQuery skryptem jQuery z Google Hosted Libraries.
WordPress domyślnie zawiera jQuery wraz z rdzeniem oprogramowania. Odkryliśmy jednak, że zastąpienie go najnowszą wersją jQuery z biblioteki Google może poprawić wydajność.
W tym artykule pokażemy, jak łatwo zastąpić domyślny skrypt WordPress jQuery biblioteką Google, aby poprawić wydajność i szybkość.
Dlaczego i kiedy należy zastąpić domyślne WordPress jQuery?
jQuery to popularna biblioteka JavaScript używana przez programistów do tworzenia 111111 pięknych aplikacji internetowych. Jest dość często używana w WordPressie do dodawania funkcji takich jak pokazy slajdów, wyskakujące okienka i wiele innych.
WordPress zawiera bibliotekę jQuery w pakiecie z rdzeniem oprogramowania WordPress. Wiele z najlepszych wtyczek WordPress i najpopularniejszych motywów WordPress opiera się na tej bibliotece w zakresie podstawowych funkcji i funkcji.
Jednak wczytywanie jQuery na współdzielonym serwerze hostingowym może wymagać dużej ilości zasobów i spowalniać twoją witrynę, zwłaszcza jeśli używasz słabo zakodowanych motywów WordPress lub wtyczek, które nie są zgodne z najlepszymi praktykami WordPress.
Innym problemem związanym z używaniem wersji jQuery dołączonej do WordPressa jest to, że nie będzie ona aktualizowana, dopóki WordPress jej nie zaktualizuje. Mogą istnieć nowsze wersje jQuery z poprawkami wydajności lub zabezpieczeń, ale nie uzyskasz do nich dostępu, dopóki nie zostaną uwzględnione w aktualizacji WordPress.
Istnieje kilka obejść, aby to naprawić. Można na przykład wczytywać jQuery za pośrednictwem serwerów Google lub oficjalnego CDN jQuery.
Biblioteki hostowane przez Google to dobry wybór, ponieważ ich serwery są stabilne, aktualizowane i wysoce zoptymalizowane pod kątem szybkości, co pozwala jQuery wczytywać się znacznie szybciej na twojej witrynie WordPress.
W związku z tym przyjrzyjmy się, jak łatwo zastąpić domyślną jQuery WordPressa biblioteką Google.
Zastąp domyślną bibliotekę WordPress jQuery biblioteką Google
WordPress posiada wbudowaną metodę łatwego dodawania skryptów i arkuszy stylów. Pozwala to również bezpiecznie usuwać wszelkie skrypty lub arkusze stylów, które są wczytywane za pomocą wbudowanej metody.
Użyjemy tej metody, aby najpierw wyłączyć domyślne jQuery WordPressa. Następnie powiemy WordPressowi, aby wczytywał jQuery za pośrednictwem biblioteki Google.
Będziesz musiał dodać następujący kod do pliku functions. php twojego motywu, wtyczki specyficznej dla witryny lub wtyczki fragmentów kodu.
function wpb_modify_jquery() {
//check if front-end is being viewed
if (!is_admin()) {
// Remove default WordPress jQuery
wp_deregister_script('jquery');
// Register new jQuery script via Google Library
wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js', false, '3.6.0');
// Enqueue the script
wp_enqueue_script('jquery');
}
}
// Execute the action when WordPress is initialized
add_action('init', 'wpb_modify_jquery');
Zalecamy użycie wtyczki fragmentów kodu WPCode, aby dodać ten kod w WordPress. Jest darmowa, łatwa w użyciu i nie zepsuje witryny, jeśli coś pójdzie nie tak.
Uwaga: Istnieje również wersja premium WPCode, która oferuje zaawansowane funkcje, takie jak wersje kodu, automatyczne piksele konwersji, zaplanowane fragmenty kodu, prywatną bibliotekę w chmurze i wiele innych.
Aby rozpocząć, musisz zainstalować i włączyć WPCode. Jeśli potrzebujesz pomocy, zapoznaj się z naszym przewodnikiem na temat instalacji wtyczki WordPress.
Po aktywacji wtyczki, przejdź do Code Snippets „ Add Snippet z kokpitu WordPress, a następnie znajdź opcję „Add Your Custom Code (New Snippet)” i kliknij znajdujący się pod nią przycisk „Use snippet”.
Następnie należy wybrać „Fragment kodu PHP” z listy typów kodu, która pojawi się na ekranie.
Następnie możesz dodać tytuł dla twojego fragmentu kodu. Może to być cokolwiek, co pomoże ci zapamiętać, do czego służy kod.
Następnie wystarczy wkleić powyższy kod w polu „Podgląd kodu”.
Na koniec przełącz przełącznik z „Nieaktywny” na „Aktywny” i kliknij przycisk „Zapisz fragment kodu”.
To wszystko! WordPress zastąpi teraz domyślne jQuery i zamiast tego będzie wczytywał je przez bibliotekę Google.
Uwaga: Ta metoda będzie nadal wczytywać wersję jQuery wymienioną w adresie URL. W przyszłości może być konieczna zmiana adresu URL biblioteki Google, aby użyć nowszej wersji jQuery.
Google nie zaktualizuje automatycznie numeru wersji, ponieważ może to spowodować problemy ze zgodnością, jeśli twój motyw lub wtyczki korzystają z innej wersji.
Najnowszy adres URL można znaleźć, przechodząc na witrynę internetową bibliotek hostowanych przez Google.
Stamtąd można również znaleźć adresy URL starszych wersji jQuery, które można wykorzystać do rozwiązywania problemów w razie potrzeby.
Zastępowanie innych domyślnych bibliotek jQuery
Oprócz rdzeniowej biblioteki jQuery, WordPress zawiera również kilka innych skryptów jQuery. Niektóre z tych skryptów, takie jak jQuery Mobile i jQuery UI, są hostowane w bibliotece Google.
W przypadku innych bibliotek można skorzystać z własnych serwerów CDN jQuery, aby wczytywać je znacznie szybciej. W poniższym przykładzie zastąpiliśmy skrypt WordPress jquery-ui-core oficjalną wersją jquery-ui.
function wpb_modify_jquery_ui() {
if (!is_admin()) {
wp_deregister_script('jquery-ui-core');
wp_register_script('jquery-ui-core', 'https://code.jquery.com/ui/1.12.1/jquery-ui.min.js', false, '1.12.1');
wp_enqueue_script('jquery-ui-core');
}
}
add_action('init', 'wpb_modify_jquery_ui');
Podobnie jak w przypadku bibliotek Google, po pewnym czasie trzeba będzie podmienić adres URL, aby korzystać z najnowszej wersji skryptu.
Całkowite wyłączenie jQuery w WordPress
Ze względu na jego szerokie zastosowanie, nie zalecamy całkowitego wyłączenia jQuery na twojej witrynie internetowej WordPress. Nawet jeśli twój motyw WordPress nie używa jQuery, wiele popularnych wtyczek WordPress nadal go potrzebuje.
Jeśli jednak jesteś pewien, że twoja witryna internetowa nie potrzebuje jQuery, możesz ją bezpiecznie wyłączyć.
Wystarczy dodać poniższy kod do pliku funkcji twojego motywu, wtyczki specyficznej dla witryny lub wtyczki fragmentów kodu, takiej jak WPCode.
if ( !is_admin() ) wp_deregister_script('jquery');
To wszystko. Ten kod po prostu wyłącza skrypt jQuery z wczytywania na front-endzie twojej witryny internetowej WordPress.
Rozwiązywanie problemów związanych z jQuery w WordPressie
Nowe wersje jQuery mogą czasami przestarzały lub usuwać stare metody i funkcje. Jeśli wtyczka WordPress na twojej witrynie internetowej używa starszej metody, może to potencjalnie zepsuć działanie.
Możesz zauważyć ostrzeżenia w obszarze Konsoli narzędzia Inspect lub powiadomienie, że niektóre funkcje przestały działać.
WordPress korzystał kiedyś ze skryptu o nazwie jQuery-migrate, aby zapewnić zgodność kopii zapasowej ze starszymi wersjami jQuery. Jednak od wersji WordPress 5. 5 skrypt ten został wycofany z WordPress.
Jeśli chcesz dodać z powrotem skrypt jQuery-migrate lub rozwiązywać problemy między różnymi wersjami jQuery, możesz wypróbować następującą metodę.
Wystarczy zainstalować i włączać wtyczkę Version Control for jQuery. Aby uzyskać więcej informacji, zobacz nasz przewodnik krok po kroku, jak zainstalować wtyczkę WordPress.
Po włączaniu należy przejść na stronę Ustawienia ” Kontrola wersji jQuery. Tutaj możesz wybrać wersję jQuery, której chcesz używać.
Wtyczka będzie automatycznie wczytywać tę wersję z oficjalnego CDN jQuery.
Wtyczka będzie również wczytywać skrypt migracji jQuery. Jeśli chcesz, możesz go wyłączyć podczas rozwiązywania problemów.
Nie zapomnij kliknąć przycisku „Zapisz zmiany”, aby zapisać twoje zmiany.
Mamy nadzieję, że ten artykuł pomógł ci dowiedzieć się, jak zastąpić domyślną bibliotekę WordPress jQuery biblioteką Google. Możesz również zobaczyć te przydatne poradniki jQuery dla użytkowników WordPress a lub zapoznać się z naszym kompletnym przewodnikiem po optymalizacji wydajności WordPress a.
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.
ALEX
Hello,
We have a server in China, and all of resource from Google are blocked by Chinese government firewall.
But, the Jquery and Fonts resources are loaded from Google on Wordpress by default now, and the site is caused seriously delay.
So, is there anyway to force Js or CSS resources to be loaded from local server please?
Thanks
WPBeginner Support
If you have a web address for the jquery files on a local server then you would change the url in the snippet to point toward where the jquery is located.
Administrator
Wilbur
Hey, sorry for haling this post out of the grave… How relevant is this still? In Terms of the latest P Core versions?
Thanks
Jorge
Hi,
Here is a more advanced implementation:
add_action( 'wp_enqueue_scripts’, 'register_jquery’ );
function register_jquery() {
if (!is_admin()) {
wp_deregister_script(’jquery-core’);
wp_register_script(’jquery-core’, 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js’, true, '1.11.3′);
wp_enqueue_script(’jquery-core’);
wp_deregister_script(’jquery-migrate’);
wp_register_script(’jquery-migrate’, 'http://cdn.yourdomain.com/wp-includes/js/jquery/jquery-migrate.min.js’, true, '1.2.1′);
wp_enqueue_script(’jquery-migrate’);
}
}
Where „cdn.yourdomain.com” it should be replaced by the file path, using a CDN for a better result.
Best Regards,
Jorge Ortiz
Simon
Both the post’s solution and this one break my site
Plato39
Jorge’s code worked for me – but the quotation marks must be replaced. Try this:
add_action( 'wp_enqueue_scripts’, 'register_jquery’ );
function register_jquery() {
if (!is_admin()) {
wp_deregister_script(’jquery-core’);
wp_register_script(’jquery-core’, 'https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js’, true, '1.11.3′);
wp_enqueue_script(’jquery-core’);
wp_deregister_script(’jquery-migrate’);
wp_register_script(’jquery-migrate’, 'http://cdn.yourdomain.com/wp-includes/js/jquery/jquery-migrate.min.js’, true, '1.2.1′);
wp_enqueue_script(’jquery-migrate’);
}
}
Plato39
OK – it’s this webpage that is adding the fancy quotes. Just do a 'find and replace’ in your text editor (or manually replace the quotes with plain ones) and the code will work in your theme’s functions.php file.
Shaurya
what do i put in the url if I dont have a cdn ?
will
hi
thank you very much for your post, I tried to change it and do not know if I did well because my web now is 2 seconds slower
How do I check if I did well and I’m using the google libraries?
Ihsan
I tested code above and i replace the last line with this to make it work and better
add_action( 'wp_print_scripts’, 'modify_jquery’, 100 );
Alejandro
Hi, Thank you for your tips. I do not know Why when using this function, the jquery from Google is loading twice, I mean, I have two HTTP request instead of one, Here is the test: http://tools.pingdom.com/fpt/#!/dROQaF/http://elbauldelprogramador.com.
With jquery.easing the same happends, but this time with 3 HTTP request for the same file.
Any ideas? I’ve been looking into the code but didn’t find duplication of wp_enqueue_script(”);
Thank you in advance
Alejandro
Just notice that when I am logged in, jquery from google is only loaded once.
Mathieu
Thanx! The jQuery used to break up my admin functionality now that’s solved.
Mitch
Thanks much appreciated.
Joseph Chambers
What if I want to load either HTTP or HTTPS based on whatever the visitor is visiting our page on.
for most things we can change: http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js -> //ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js and it works. However; something in the wp_register_script() is throwing a error ( White page with the word: Error ) when I change that. thoughts, solutions?
Sajid Iqbal
Thanks Syed for this great post. Saved me a lot of time.
Matt Ogborne
Very helpful, Thank you!
Matt
Riversatile
Hi,
Here is the latest version of the googleapi jquery file.
When you copy/paste the code above, don’t forget to replace the jquery URl by this one :
http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
Then replace „1.4.4” by „1.6.2”
Like that :
//Making jQuery Google APIfunction modify_jquery() { if (!is_admin()) { // comment out the next two lines to load the local copy of jQuery wp_deregister_script(’jquery’); wp_register_script(’jquery’, 'http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js’, false, '1.6.2′); wp_enqueue_script(’jquery’); }}add_action(’init’, 'modify_jquery’);
vnu
Could anyone tell me if I need to modify (!is_admin) to „minimum” capability if I use a plugin plugin like thethefly 's tabs and accordions . So the tabs created on pages are view-able by everyone?
Thanks !
Melissa Cleaver
Thanks so much for the code, but when I tried to use it in my functions.php file, I got a fatal error, no matter where in the code I put it. Am I doing something wrong here?
Editorial Staff
Try the new code that we just put out there.
Administrator
swanie
Question: does Google Library do a good job at pulling in the alt tag info from the media library? … I have several professional themes that use a main page jQuery slider, but they don’t pull in the alt tag … thus, the source code look like: alt=”” … which of course, is an seo no-no. I’ve never used the Google Library script … I’d be curious how that works. What’s your experience?
Editorial Staff
Alt tag for what? This is only replacing the javascript….
Administrator
swanie
OK … I guess I’m specifically talking about jQuery sliders … I have purchased several professional themes with a main page jQuery slider … here’s one of them: http://coloradospringsautomechanics.com … if you view source, it pulls in the images, but not the alt tags … the alt tag is empty.
I guess by reading this post, this Google Library approach could possibly resolve that.
Another solution could be to break open the plugin files and add to the alt tag so I should have:
img src=”file.jpg” alt=”” title=””
Just wondering why these jQuery sliders don’t pull in the alt tags. That make sense? Am I off-subject?
You guys rock, by the way.
Aamir Rizwan
Your website is flagged „malware” by Google.
Geraldo
//Offtopic
@Swanie
Go and look here : http://sitecheck.sucuri.net/results/coloradospringsautomechanics.com/
Security report (Warnings found):
error Blacklisted: Yes
error Likely compromised: Yes
//Ontopic
We can’t : „bundle” all our JQuery scripts? Do we have to make a call for every script seperate?
WPBeginner Support
@Geraldo : you can resolve dependensies. For example if you are loading a jQuery script it would obviously need jQuery so you add that as dependency and WordPress would enqueue it for you.