Zaufane samouczki WordPress, kiedy ich najbardziej potrzebujesz.
Przewodnik dla początkujących po WordPressie
WPB Cup
25 milionów+
Witryny korzystające z naszych wtyczek
16+
Lata doświadczenia z WordPressem
3000+
Samouczki WordPress od ekspertów

Jak prawidłowo dodawać skrypty JavaScript i style w WordPress

Kiedy po raz pierwszy zaczęliśmy pracować z WordPress, dodawanie JavaScript i CSS wydawało się wystarczająco proste. Po prostu wklejałeś kod bezpośrednio do swojego motywu lub wtyczki i przechodziłeś dalej.

Ale przez lata my (i wielu naszych czytelników) nauczyliśmy się na własnej skórze, że to obejście może stworzyć poważne problemy. Od konfliktów skryptów między sobą po całkowite awarie witryn po aktualizacji – widzieliśmy już wszystko.

Dobra wiadomość jest taka, że WordPress ma właściwy sposób ładowania skryptów i stylów — a gdy go poznasz, zaoszczędzisz sobie wielu problemów w przyszłości.

W tym przewodniku pokażemy Ci, jak prawidłowo dodawać JavaScript i CSS w WordPress. Niezależnie od tego, czy tworzysz niestandardowy motyw, czy swój pierwszy wtyczkę, te kroki pomogą Ci zrobić to w bezpieczny i niezawodny sposób.

Prawidłowe dodawanie JavaScriptów i stylów w WordPressie

Powszechny błąd podczas dodawania skryptów i arkuszy stylów w WordPress

Wielu nowych programistów wtyczek i motywów WordPressa popełnia błąd, bezpośrednio dodając swoje skrypty lub wbudowany CSS do swoich wtyczek i motywów.

Niektórzy błędnie używają funkcji wp_head do ładowania 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 załadujesz jQuery ręcznie, a inna wtyczka załaduje jQuery za pomocą właściwej metody, to jQuery zostanie załadowane dwukrotnie. Jeśli jest ładowane na każdej stronie, negatywnie wpłynie to na szybkość i wydajność WordPress.

Jest również możliwe, że te dwa są różnymi wersjami, co również może powodować konflikty.

Biorąc to pod uwagę, przyjrzyjmy się właściwemu sposobowi dodawania skryptów i arkuszy stylów.

Dlaczego kolejkowanie skryptów i stylów w WordPress?

WordPress ma silną społeczność deweloperów. Tysiące ludzi z całego świata tworzy motywy i wtyczki dla WordPress.

Aby upewnić się, że wszystko działa poprawnie i nikt nie przeszkadza innym, WordPress posiada system kolejkowania. Ten system zapewnia programowalny sposób ładowania JavaScript i arkuszy stylów CSS.

Używając funkcji wp_enqueue_script i wp_enqueue_style, informujesz WordPress, kiedy załadować plik, gdzie go załadować i jakie są jego zależności.

System ten pozwala również programistom na wykorzystanie wbudowanych bibliotek JavaScript, które są dostarczane z WordPress, zamiast ładowania tego samego skryptu strony trzeciej wielokrotnie. Zmniejsza to czas ładowania strony i pomaga uniknąć konfliktów z innymi wtyczkami i motywami.

Jak prawidłowo dodawać skrypty w WordPressie?

Prawidłowe ładowanie skryptów w WordPress jest bardzo łatwe. Poniżej znajduje się przykładowy kod, który można wkleić do pliku wtyczki, do pliku functions.php motywu lub do wtyczki do fragmentów kodu, aby prawidłowo ładować 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(). Ta funkcja przyjmuje 5 parametrów:

  • $handle – Handle to unikalna nazwa Twojego skryptu. Nasz nazywa się „my_amazing_script”
  • $src – src to lokalizacja twojego skryptu. Używamy funkcji plugins_url, aby uzyskać prawidłowy adres URL naszego folderu wtyczek. Gdy WordPress to znajdzie, będzie szukał naszego pliku amazing_script.js w tym folderze.
  • $deps – deps oznacza zależności. Ponieważ nasz skrypt używa jQuery, dodaliśmy jQuery w obszarze zależności. WordPress automatycznie załaduje jQuery, jeśli nie jest ono już ładowane na stronie.
  • $ver – Jest to numer wersji naszego skryptu. Ten parametr nie jest wymagany.
  • $in_footer – Chcemy załadować nasz skrypt w stopce, więc ustawiliśmy wartość na true. Jeśli chcesz załadować skrypt w nagłówku, ustawisz ją na false.

Po podaniu wszystkich parametrów w wp_register_script, możemy po prostu wywołać skrypt w wp_enqueue_script(), co sprawia, że wszystko działa.

Ostatnim krokiem jest użycie haka akcji wp_enqueue_scripts, aby faktycznie załadować skrypt. Ponieważ jest to przykładowy kod, dodaliśmy go tuż pod wszystkim innym.

Jeśli dodawałeś to do swojego motywu lub wtyczki, możesz umieścić ten hook akcji tam, gdzie skrypt jest faktycznie wymagany. Pozwala to zmniejszyć zużycie pamięci przez wtyczkę.

Teraz niektórzy mogą się zastanawiać, dlaczego robimy dodatkowy krok, aby najpierw zarejestrować skrypt, a następnie go dodać? Cóż, pozwala to innym właścicielom witryn na usunięcie twojego skryptu bez modyfikowania kodu rdzenia twojej wtyczki.

Poprawne dodawanie stylów w WordPress

Podobnie jak skrypty, możesz również dodawać swoje arkusze 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, teraz używamy wp_enqueue_style do dodania naszego arkusza stylów.

Zauważ, że użyliśmy haka akcji wp_enqueue_scripts zarówno dla stylów, jak i skryptów. Pomimo nazwy, ta funkcja 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 dodać.

Jednakże, jeśli używasz funkcji enqueue scripts w swoim 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 nauczyć się, jak prawidłowo dodawać JavaScript i style w WordPress. Możesz również przestudiować kod źródłowy najlepszych wtyczek WordPress, aby zobaczyć przykłady kodu w praktyce, lub zapoznać się z naszym przewodnikiem na temat jak łatwo dodawać JavaScript do stron lub wpisów w WordPress.

Jeśli podobał Ci się ten artykuł, zasubskrybuj nasz kanał YouTube po samouczki wideo WordPress. Możesz nas również znaleźć na Twitterze i Facebooku.

Ujawnienie: Nasze treści są wspierane przez czytelników. Oznacza to, że jeśli klikniesz w niektóre z naszych linków, możemy otrzymać prowizję. Zobacz jak finansowany jest WPBeginner, dlaczego to ważne i jak możesz nas wesprzeć. Oto nasz proces redakcyjny.

Ostateczny zestaw narzędzi WordPress

Uzyskaj BEZPŁATNY dostęp do naszego zestawu narzędzi – kolekcji produktów i zasobów związanych z WordPress, które powinien mieć każdy profesjonalista!

Interakcje czytelników

36 CommentsLeave a Reply

  1. Ten post jest trochę techniczny, ale uwielbiam go, ponieważ zajmuję się tworzeniem stron w WordPress. Dzięki niemu nauczyłem się więcej o używaniu PHP i dodawaniu arkuszy stylów oraz skryptów we właściwy sposób. Najlepsze praktyki są podane w tym artykule, aby w przyszłości nie było konfliktów między kodami.

  2. Cześć,
    Zrobiłem to, co jest tutaj napisane, ale teraz na mojej stronie internetowej pojawia się pusta biała strona. Czy ktoś mógłby mi podpowiedzieć?
    Dzięki

  3. To jest miłe, chociaż moja zwykła praktyka to dodawanie wp_enqueue_script/style w jednej linii bez rejestracji. Koderzy muszą uważać na parametry, być może przydałoby się trochę wyjaśnień na ten temat. Na przykład, różne wersje jQuery (Twój skrypt jQuery może wymagać innej wersji niż WordPress) i gdzie go dodać (nagłówek czy stopka, co jest określone przez parametr true/false). Skrypt jQuery musi być dodany w nagłówku (stąd 'false' musi być przekazane jako wartość parametru), w przeciwnym razie może nie działać.

  4. Często jest wiele plików style.css.
    Jak mogę zapewnić prawidłową kolejność ładowania za pomocą enque i upewnić się, że CSS motywu potomnego jest ładowany jako ostatni?

    Pozdrowienia z Niemiec
    Hansjörg

  5. Jak przekazać pusty parametr do register_script? Chcę się upewnić, że skrypt jest ładowany na dole strony, ale nie mogę znaleźć informacji, czy jest to domyślne zachowanie, czy nie.

    • Bonjour,

      Dziękuję za Twój doskonały zasób. Merci !!!

      Jestem trochę nowicjuszem i dopiero zaczynam swoją podróż z nauką PHP i tego, jak WordPress używa wp_enqueue_script i wp_register_script do dodawania JavaScript i CSS.

      Używam tego darmowego pluginu o nazwie Easy Code Manager, aby pomóc w przejściu przez twoje przykłady:
      jednak nie jestem pewien, czy to właściwy plugin do użycia.

      Czytałem wcześniej, że modyfikowanie kodu w functions.php nie jest najlepszym pomysłem, więc zastanawiam się, czy można to zrobić?

      Czy nie zmieni się to po aktualizacji motywu?
      Przepraszam za pytanie, wciąż uczę się WordPressa.

      Dziękuję,
      Kerry

  6. Chcę dodać reklamę Amazon
    Próbowałem dodać ją w widżecie tekstowym, ale wyświetla się pusta.
    Poniżej znajduje się kod-

    To jest moja strona-
    Pomóż mi. Jak dodać js na moją stronę?

  7. włożyłem javascript za pomocą tej wtyczki, ale teraz muszę go usunąć, próbowałem odinstalować i dezaktywować wtyczkę, ale javascript nadal się wykonuje

  8. Dzień dobry Panie,
    Używam motywu esteem i chciałem dodać do mojej strony internetowej funkcjonalność javascript, taką jak lightbox. Stworzyłem motyw potomny, a kod wygląda następująco. w pliku 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!!!!!

  9. witam…..
    dodaję plik .js do katalogu js w wordpress i podaję jego odniesienie w funcation.php
    ale to nie działa

    wp_enqueue_script( ‘any-navigation’, get_template_directory_uri() . ‘/js/menu.js’);

  10. Dzięki wielkie! Próbowałem dodać niestandardowy plik .js, ale to pierwsza instrukcja, która mówi, że potrzebny jest register_script.

  11. Hej, świetny tutorial. Mam problem z dodaniem javascriptu związanego z Google Analytics, tak jak opisano tutaj:
    Umieściłem skrypt w folderze 'js' mojego motywu potomnego (po wcześniejszym usunięciu html z kodu).

    Kiedy ładuję stronę, ciągle otrzymuję błąd:

    ReferenceError: Nie można znaleźć zmiennej: ga
    (funkcja anonimowa)myscript.js:6

    ...i właśnie uświadomiłem sobie, że być może muszę dodać 'analytics.js' jako zależność!

    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 :(

  12. Czy istnieje jakaś wtyczka do tego samego… jestem nowicjuszem i nie potrafię bawić się kodem… Proszę o pomoc, Panie

  13. Cześć.
    Dzięki za ten niesamowity post z tutorialem! Ale kiedy mówisz „gdzie przesłać skrypt”, możesz po prostu zdefiniować nagłówek lub stopkę (na wszystkich stronach internetowych!)? Czy możesz zdefiniować konkretną stronę, aby go załadować? Potrzebuję go tylko na jednej. Z góry dziękuję i trzymaj się pracy! Pozdrawiam.

  14. Jestem totalnym nowicjuszem w JS, ale znam HTML. Chcę umieścić to na stronie WordPress:

    W zasadzie jest to widżet do dołączenia do GoToMeeting. Działa, jeśli po prostu wrzucisz go do ciała strony HTML, ale w WordPressie jest tłumiony.
    Czy możesz mi podać wersję "dla opornych" jak to zrobić, żeby działało?

  15. W kwestii ładowania stylów, w linii 6, wp_register_script, powinno być moim zdaniem wp_register_style.

  16. Naprawdę podoba mi się Twoja strona, jest pełna przydatnych wskazówek, jednak wygląda na to, że nie robisz tego „prawidłowo” dla CSS enqueue, mimo że Twój tytuł tak mówi :=) Właściwy sposób byłby taki:

    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!

  17. Dzięki za włożony wysiłek. Po prostu czuję, że to nie jest właściwe używanie wp_enque_script do ładowania arkuszy stylów. WordPress mógłby w przyszłości wypluć skrypt zamiast składni arkusza stylów dla niego.

    Czy naprawdę osadzasz w ten sposób?

    • Ten tutorial pokazuje, jak ładować pliki JavaScript i arkusze stylów dla Twoich motywów lub wtyczek w WordPress. Jeśli przez „Osadź” miałeś na myśli sposób, w jaki wyświetlamy kod w artykułach, to używamy do tego wtyczki Syntax Highlighter.

      Admin

  18. Cześć, jestem trochę nowy w tworzeniu motywów WordPress i czytając o tych tematach, chciałem Cię zapytać o coś związanego z tym. Jeśli chcę zaktualizować link do biblioteki jQuery, jak to zrobić lub gdzie znaleźć link, próbowałem to zrobić, ale nie mogę go znaleźć. Z góry dziękuję za pomoc.

    • Jeśli przez aktualizację linku do biblioteki jQuery masz na myśli dodanie jQuery z biblioteki Google. WordPress jest wyposażony w jQuery, a aby załadować go w swoim motywie, użyj tej linii w swoim motywie:

      <?php wp_enqueue_script('jquery'); ?>

      Admin

      • okej, więc jeśli chcę mieć najnowsze jquery, po prostu używam tej linii?, ponieważ ktoś powiedział mi, żebym użył wtyczki tylko do tego, ale chciałem nauczyć się, jak to zrobić bez wtyczki

  19. Przydatny Syed, dzięki.
    Niedawno miałem problem z wczytywaniem pliku css przy użyciu _underscore jako frameworka, chociaż arkusz stylów nazywał się mycustomstyles.css, motyw wywoływał mycustomstyles.css?ver=xx, a motyw nie wczytywał pliku z powodu nazwy pliku, dodając ?ver=xx na końcu nazwy.
    Czy to ma coś wspólnego z domyślną wartością $ver?

Zostaw odpowiedź

Dziękujemy za pozostawienie komentarza. Pamiętaj, że wszystkie komentarze są moderowane zgodnie z naszą polityką komentowania, a Twój adres e-mail NIE zostanie opublikowany. Prosimy NIE używać słów kluczowych w polu nazwy. Prowadźmy osobistą i znaczącą rozmowę.