Chcesz dowiedzieć się, jak poprawnie dodawać skrypty JavaScript i arkusze stylów CSS w WordPress?
Wielu majsterkowiczów często popełnia błąd polegający na bezpośrednim wywoływaniu skryptów i arkuszy stylów we wtyczkach i motywach. Bazując na naszym doświadczeniu, może to powodować wiele problemów w późniejszym czasie.
W tym artykule pokażemy, jak poprawnie dodać JavaScript i arkusze stylów w WordPress. Będzie to szczególnie przydatne dla tych, którzy dopiero zaczynają uczyć się tworzenia motywów i wtyczek WordPress.
Najczęstsze błędy podczas dodawania skryptów i arkuszy stylów w WordPressie
Wielu nowych twórców wtyczek i motywów WordPress popełnia błąd polegający na bezpośrednim dodawaniu swoich skryptów lub inline CSS do swoich wtyczek i motywów.
Niektórzy błędnie używają funkcji wp_head
do wczytywania swoich skryptów i arkuszy stylów.
<?php
add_action('wp_head', 'wpb_bad_script');
function wpb_bad_script() {
echo 'jQuery goes here';
}
?>
Chociaż powyższy kod może wydawać się łatwiejszy, jest to niewłaściwy sposób dodawania skryptów w WordPress i prowadzi do większej liczby konfliktów w przyszłości.
Na przykład, jeśli ładujesz jQuery ręcznie, a inna wtyczka wczytuje jQuery za pomocą odpowiedniej metody, to jQuery jest wczytywane dwukrotnie. Jeśli jest ona wczytywana na każdej stronie, to ma to negatywny wpływ na szybkość i wydajność WordPressa.
Możliwe jest również, że są to różne wersje, co również może powodować konflikty.
W związku z tym przyjrzyjmy się prawidłowemu sposobowi dodawania skryptów i arkuszy stylów.
Po co wymuszać skrypty i style w WordPress?
WordPress ma silną społeczność programistów. Tysiące ludzi z całego świata opracowuje motywy i wtyczki dla WordPressa.
Aby upewnić się, że wszystko działa poprawnie i nikt nie depcze innym po piętach, WordPress posiada system enqueuing. System ten zapewnia programowalny sposób wczytywania skryptów JavaScript i arkuszy stylów CSS.
Używając funkcji wp_enqueue_script i wp_enqueue_style, mówisz WordPressowi, kiedy wczytywać plik, gdzie go wczytywać i jakie są jego zależności.
System ten pozwala również programistom wykorzystywać wbudowane biblioteki JavaScript, które są dostarczane wraz z WordPressem, zamiast wczytywać wielokrotnie ten sam skrypt innej firmy. Skraca to czas wczytywania strony i pomaga uniknąć konfliktów z innymi wtyczkami i motywami.
Jak prawidłowo kolejkować skrypty w WordPress?
Prawidłowe wczytywanie skryptów w WordPressie jest bardzo proste. Poniżej znajduje się przykładowy kod, który należy wkleić w pliku wtyczki, w pliku functions.php twojego motywu lub we fragmencie kodu wtyczki, aby poprawnie wczytywać skrypty w WordPress.
?php
function wpb_adding_scripts() {
wp_register_script('my_amazing_script', plugins_url('amazing_script.js', __FILE__), array('jquery'),'1.1', true);
wp_enqueue_script('my_amazing_script');
}
add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts' );
?>
Wyjaśnienie:
Zaczęliśmy od zarejestrowania naszego skryptu za pomocą funkcji wp_register_script()
. Funkcja ta przyjmuje 5 parametrów:
- $handle – Handle to unikatowa nazwa twojego skryptu. Nasz nazywa się „my_amazing_script”.
- $src – src to lokalizacja twojego skryptu. Używamy funkcji plugins_url, aby uzyskać właściwy adres URL naszego katalogu wtyczek. Gdy WordPress go znajdzie, będzie szukał naszego pliku amazing_script.js w tym katalogu.
- $deps – deps oznacza zależność. Ponieważ nasz skrypt korzysta z jQuery, dodaliśmy jQuery w obszarze zależności. WordPress automatycznie wczyta jQuery, jeśli nie jest ono już wczytywane na witrynie.
- $ver – Jest to numer wersji naszego skryptu. Ten parametr nie jest wymagany.
- $in_footer – Chcemy wczytywać nasz skrypt w stopce, więc ustawiliśmy tę wartość na true. Jeśli chcesz wczytywać skrypt w nagłówku, ustaw wartość false.
Po podaniu wszystkich parametrów w wp_register_script
, możemy po prostu wywołać skrypt w wp_enqueue_script()
, który sprawi, że wszystko się wydarzy.
Ostatnim krokiem jest użycie haka działania wp_enqueue_scripts, aby faktycznie wczytywać skrypt. Ponieważ jest to przykładowy kod, dodaliśmy go tuż pod wszystkim innym.
Jeśli dodajesz to do twojego motywu lub wtyczki, możesz umieścić ten hak działania tam, gdzie skrypt jest faktycznie wymagany. Pozwala to zmniejszyć ilość zajmowanej pamięci przez twoją wtyczkę.
Teraz niektórzy mogą się zastanawiać, dlaczego robimy dodatkowy krok, aby najpierw zarejestrować skrypt, a następnie go zapisać? Cóż, pozwala to innym właścicielom witryn na wyrejestrowanie twojego skryptu bez modyfikowania rdzeń kodu wtyczki.
Prawidłowe wymuszanie stylów w WordPress
Podobnie jak skrypty, można również enqueue arkuszy stylów. Spójrz na poniższy przykład:
<?php
function wpb_adding_styles() {
wp_register_style('my_stylesheet', plugins_url('my-stylesheet.css', __FILE__));
wp_enqueue_style('my_stylesheet');
}
add_action( 'wp_enqueue_scripts', 'wpb_adding_styles' );
?>
Zamiast używać wp_enqueue_script
, używamy teraz wp_enqueue_style
, aby dodać nasz arkusz stylów.
Powiadomienie, że użyliśmy haka działania wp_enqueue_scripts
zarówno dla stylów, jak i skryptów. Pomimo nazwy, funkcja ta działa dla obu.
W powyższych przykładach użyliśmy funkcji plugins_url
, aby wskazać lokalizację skryptu lub stylu, który chcieliśmy umieścić w kolejce.
Jeśli jednak używasz funkcji enqueue scripts w twoim motywie, po prostu użyj get_template_directory_uri()
zamiast tego. Jeśli pracujesz z motywem potomnym, użyj get_stylesheet_directory_uri
().
Poniżej znajduje się przykładowy kod:
<?php
function wpb_adding_scripts() {
wp_register_script('my_amazing_script', get_template_directory_uri() . '/js/amazing_script.js', array('jquery'),'1.1', true);
wp_enqueue_script('my_amazing_script');
}
add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts' );
?>
Mamy nadzieję, że ten artykuł pomógł ci dowiedzieć się, jak prawidłowo dodawać JavaScript i style w WordPress. Możesz również zapoznać się z kodem źródłowym najlepszych wtyczek WordPress, aby uzyskać przykłady kodu z prawdziwego życia lub zapoznać się z naszym przewodnikiem na temat łatwego dodawania JavaScript do wpisów lub stron WordPress.
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.
Syed Balkhi
Hey WPBeginner readers,
Did you know you can win exciting prizes by commenting on WPBeginner?
Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
You can get more details about the contest from here.
Start sharing your thoughts below to stand a chance to win!
Schroedingers Katze
Cheers, thanks for sharing! Great explanation.
WPBeginner Support
You’re welcome
Administrator
Jean-Michel
Hi there,
I followed what is said here but now I get an empty white page on my web site. Could someone give me a hint ?
Thanks
WPBeginner Support
It sounds like you either copied the code incorrectly or it had an issue with something on your site. You can remove the code using: https://www.wpbeginner.com/beginners-guide/how-to-use-ftp-to-upload-files-to-wordpress-for-beginners/
If you added it manually, otherwise you could use:
https://www.wpbeginner.com/wp-tutorials/how-to-fix-the-wordpress-white-screen-of-death/
Administrator
Orhan
This article was very useful to me. Thank you.
Mark
Typical article that makes you even more confused after than before…
Zaved Hossain
This is nice, though my usual practice is to add wp_enqueue_script/style in a single line without registering. Coders need to be careful about the parameters, perhaps a little explanation of that would be helpful. For example, the different versions of jquery (your jquery script may require different version than the wordpress’) and where to add it (header or footer which is determined by the true/false parameter). The jquery script needs to be added in the header, (hence a 'false’ needs to be passed as the param value), otherwise it may not work.
Hansjörg Leichsenring
There are often a lot of style.css.
How can I ensure the correct load-order with enque and make sure, that the child css is loaded last?
Cheers from Germany
Hansjörg
Carlos Araya
How do I pass empty parameter to register_script? I want to make sure that they script is loaded at the bottom of the page but can’t find information whether this is the default behavior or not
Kerry Beeher
Bonjour,
Thank you for your excellente resource. Merci !!!
I am little novice and just begin my journey to learn PHP and how WordPress use wp_enqueue_script and wp_register_script to add JavaScript and CSS.
I use this free plugin called Easy Code Manager to help run through your exemples:
however I am not sure if this is right plugin to use.
I read before that it is not the best idea to modifier code in functions.php so I wonder if this is ok to do?
Will it not get change on a theme update?
Sorry for question, I still learn WordPress.
Merci,
Kerry
Vaibhav Bansal
I want to add an Amazon Ad
I tried to add it in text widget, but it shows blank.
Below is the code-
This is my site-
Help me. How do I add js on my site?
WPBeginner Support
Hi Vaibhav,
Please check out our list of ad management plugins for WordPress. You can use these plugins to display ads on your WordPress site without editing your theme files.
Administrator
pradyumna
i have inserted a javascript using this plugin but now i have to remove it, i have tried uninstalling and deactivating the plugin but the javascript still executes
Vijay.Rajpal
Hello Sir,
I am using esteem theme and I wanted to add some javascripts functionality to my website like lightbox. I have created a child theme and the code are as follows. in the functions.php.
and I am getting an error:-Parse error: syntax error, unexpected '{' in E:\InstantWP_4.5\iwpserver\htdocs\wordpress\wp-content\themes\esteem-child\functions.php on line 18
Please Help I am using sublime as my text editor.
Please Help!!!!!
WPBeginner Support
There is an unexpected { in the code. Go to the line 18 of your functions file and then carefully study the code. You may have forgotten some tiny code like a missing ;
Administrator
Pramod
hello…..
i m adding .js file in js directory of wordpress and gives its reference of it in funcation.php
but its not working
wp_enqueue_script( 'any-navigation’, get_template_directory_uri() . '/js/menu.js’);
Bobbie
Thanks so much! I’ve been trying to add a custom .js file but this is the first explanation that the register_script was needed.
colkav
Hey, great tutorial. I’m having an issue adding a Google Analytics related javascript, as described here:
I’ve put the script in my child theme’s 'js’ folder (having first stripped the html from the code).
When i load up the page I keep getting the error :
ReferenceError: Can’t find variable: ga
(anonymous function)myscript.js:6
…and it just dawned on me that maybe I need to add 'analytics.js’ as a dependency!
Does that sounds right? And if so, how would I add analytics as a dependency for my script? I’ve tried experimenting here to no avail
Shoaib
Is there any Plugin for the same … i am newbie and can’t play with codes … Plz Help me Sir
xavi
Hi.
thanks for this amazing post tutorial! But when you say „where to upload the script” you just can define head or footer (in all entire webpages!)? Could you define an especific page to load it? I just need it in one. Thanks for advance and keep working! Cheers.
technofranchise
I want to use JavaScript or JQuery in my WordPress site. Any ideas?
Skye Barcus
I am a total novice at js but do know html. I want to put this on a wordpress page:
Basically, it’s a widget to join a GoToMeeting. This works if you just throw it into the body of an html page, but in Wordpress, it gets supressed.
Can you give me a „For Dummies” version of how to make this work?
Tyler Longren
On the style loading piece, on line 6, wp_register_script, should be wp_register_style I believe.
WPBeginner Support
Tyler, no this will work too.
Administrator
Pedro de Carvalho
why you chose to use _script instead?
Pali Madra
I would also like to know why use _script and not _style? Are there any benefits or will both work therefore either can be used?
Dejan
I really like you site it is full of useful tips, however looks like you are not doing it „Properly” for CSS enqueue even though your title say that way :=) The right way would be :
wp_register_style( 'my-css-style’, get_template_directory_uri() . '/css/style.css’, array(), '1.0′, 'all’ );
wp_enqueue_style( 'my-css-style’ );
Keep up the good work… Cheers!
Adrian Zumbrunnen
Thanks for the effort you put into this. It just feels wrong to have wp_enque_script for loading stylesheets. Wordpress could eventually spit out script instead of the stylehseet syntax for it.
Do you really embed that way?
WPBeginner Support
This tutorial shows how to load JavaScript and stylesheet files for your themes or plugins in WordPress. If by Embed you meant how we display code in articles, then we use Syntax Highlighter plugin for that.
Administrator
oiveros
hi i’m kind of new on the wordpress theming , and reading about these topic, i wanted to ask you about something related to these . If i want to update the jquery library link how do i do it or where do i find the link i been trying to do it but i can’t find it. Thank you in advanced for your help
WPBeginner Support
If by updating jquery library link, you mean to add jquery from Google’s library. WordPress comes packed with jquery and to load it in your theme use this line in your theme:
<?php wp_enqueue_script('jquery'); ?>
Administrator
oiveros
okey so if i want to have the latest jquery, i just use that line?, because somebody told me to use a plugin just for that, but i wanted to learn how to do it without a plugin
oliveros
Thank you for your answer, i found the post related to that issue here in your site.
Mark
Thanks so much for this tut.
Elliott Richmond
Useful Syed, thanks.
I recently had an issue loading a css file using _underscore as a framework, although the stylesheet was called mycustomstyles.css the theme was calling mycustomstyles.css?ver=xx and the theme wasn’t loading the file because of the naming of the file by appending ?ver=xx to the end of the name.
Is that something to do with $ver default?