Dodałem już swoje skrypty, ale chciałem poznać preferowany sposób.
Po prostu wstawiam <script>
tag bezpośrednio do header.php
mojego szablonu.
Czy istnieje preferowana metoda wstawiania zewnętrznych lub niestandardowych plików js?
Jak powiązać plik js z jedną stroną? (Mam na myśli stronę główną)
theme-development
javascript
naugtur
źródło
źródło
Odpowiedzi:
Użyj
wp_enqueue_script()
w swoim motywieOdpowiedź podstawowym jest użycie
wp_enqueue_script()
wwp_enqueue_scripts
hak do przoduadmin_enqueue_scripts
dla administratora. Może to wyglądać mniej więcej tak (zakładając, że dzwonisz zfunctions.php
pliku motywu ; zwróć uwagę na to, jak odwołuję się do katalogu arkuszy stylów):To są podstawy.
Wstępnie zdefiniowane i wiele skryptów zależnych
Powiedzmy, że chcesz dołączyć jQuery i jQuery UI Sortable z listy domyślnych skryptów zawartych w WordPress i chcesz, aby Twój skrypt był od nich zależny? Łatwo, wystarczy dołączyć dwa pierwsze skrypty za pomocą wstępnie zdefiniowanych uchwytów zdefiniowanych w WordPress, a dla swojego skryptu podaj trzeci parametr, do
wp_enqueue_script()
którego należy tablica uchwytów skryptu używanych przez każdy skrypt, na przykład:Skrypty we wtyczce
Co jeśli chcesz to zrobić we wtyczce? Użyj
plugins_url()
funkcji, aby określić adres URL pliku JavaScript:Wersjonowanie skryptów
Zauważ też, że powyżej podaliśmy naszemu pluginowi numer wersji i przekazaliśmy go jako czwarty parametr do
wp_enqueue_script()
. Numer wersji jest wyprowadzany w źródle jako argument zapytania w adresie URL do skryptu i służy do zmuszenia przeglądarki do ponownego pobrania ewentualnie buforowanego pliku, jeśli wersja zostanie zmieniona.Ładuj skrypty tylko tam, gdzie to konieczne
1-ty reguła Web Performance mówi Minimalizacja żądań HTTP , więc w miarę możliwości należy ograniczyć skrypty, aby załadować tylko w razie potrzeby. Na przykład, jeśli potrzebujesz skryptu tylko w adminie, ogranicz go do stron administracyjnych za pomocą
admin_enqueue_scripts
haka:Załaduj swoje skrypty w stopce
Jeśli twoje skrypty są jednym ze skryptów, które należy załadować do stopki, istnieje piąty parametr,
wp_enqueue_script()
który mówi WordPressowi, aby go opóźnił i umieścił w stopce (zakładając, że Twój motyw nie zachował się źle i że rzeczywiście wywołuje hak wp_footer jak wszystkie dobre motywy WordPress powinny ):Dokładniejsza kontrola ziarna
Jeśli potrzebujesz dokładniejszej kontroli, Ozh ma świetny artykuł zatytułowany Porady : ładowanie Javascript za pomocą wtyczki WordPress, która zawiera więcej szczegółów.
Wyłączanie skryptów w celu uzyskania kontroli
Justin Tadlock ma fajny artykuł zatytułowany Jak wyłączyć skrypty i style, jeśli chcesz:
Przekazywanie wartości z PHP do JS za pomocą
wp_localize_script()
Na swoim blogu Vladimir Prelovac ma świetny artykuł zatytułowany Najlepsza praktyka dodawania kodu JavaScript do wtyczek WordPress, w którym omawia użycie,
wp_localize_script()
aby umożliwić ustawienie wartości zmiennych w PHP po stronie serwera, aby później użyć w JavaScript po stronie klienta.Naprawdę drobnoziarnista kontrola dzięki
wp_print_scripts()
I na koniec, jeśli potrzebujesz naprawdę drobiazgowej kontroli, możesz zajrzeć,
wp_print_scripts()
jak omówiono na Beer Planet w poście zatytułowanym Jak dołączyć CSS i JavaScript warunkowo i tylko wtedy, gdy jest potrzebny postom .Epiloque
To wszystko na temat najlepszych praktyk dołączania plików JavaScript do WordPress. Jeśli coś przeoczyłem (co prawdopodobnie mam), daj mi znać w komentarzach, abym mógł dodać aktualizację dla przyszłych podróżników.
źródło
admin_init
zamiast prosićis_admin()
. Usuń parametr wersji, jeśli korzystasz z sieci CDN Google, w przeciwnym razie pamięć podręczna przeglądarki będzie przechowywać dwie wersje: jedna bez ciągu zapytania z innych witryn i twoją.Aby skomplementować wspaniałą ilustrację użycia kolejek Mikesa, chcę jedynie zaznaczyć, że skrypty zawarte jako zależności nie muszą być kolejkowane ...
Użyję tego przykładu pod nagłówkiem Skrypty we wtyczce w odpowiedzi Mike'a.
Można to przyciąć, aby przeczytać.
Po ustawieniu zależności WordPress znajdzie je w kolejce i przygotuje do skryptu, więc nie musisz wykonywać żadnych niezależnych wywołań dla tych skryptów.
Ponadto niektórzy z was mogą się zastanawiać, czy ustawienie wielu zależności może spowodować, że skrypty będą wyświetlać się w niewłaściwej kolejności, tutaj podam przykład
Jeśli skrypt drugi był zależny od skryptu trzeciego (tzn. Skrypt trzeci powinien zostać załadowany jako pierwszy), nie miało to znaczenia, WordPress określi priorytety kolejki dla tych skryptów i wyświetli je we właściwej kolejności, krótko mówiąc, wszystko zostanie opracowane automatycznie dla ciebie przez WordPress.
źródło
init
nie jest właściwe miejsce na wysłanie kolejki.W przypadku małych fragmentów skryptów, których możesz nie chcieć umieszczać w osobnym pliku, na przykład ponieważ są one generowane dynamicznie, WordPress 4.5 i dalsze oferty
wp_add_inline_script
. Ta funkcja zasadniczo blokuje skrypt na innym skrypcie.Załóżmy na przykład, że opracowujesz motyw i chcesz, aby Twój klient mógł wstawiać własne skrypty (takie jak Google Analytics lub AddThis) na stronie opcji. Następnie można użyć
wp_add_inline_script
do zablokowania tego skryptu w głównym pliku js (powiedzmymainjs
) w następujący sposób:źródło
Moim preferowanym sposobem jest osiągnięcie dobrej wydajności, więc zamiast
wp_enqueue_script
używać HEREDOC z interfejsem API Fetch, aby ładować wszystko asynchronicznie równolegle:A następnie włóż je do głowy, czasami wraz z takimi stylami:
Powoduje powstanie wodospadu, który wygląda tak, ładując wszystko na raz, ale kontrolując kolejność wykonywania:
Uwaga: Wymaga to użycia interfejsu API pobierania, który nie jest dostępny we wszystkich przeglądarkach.
źródło