Mam to w swoim functions.php
pliku i nie mogę załadować jQuery do stopki. W includes
załadowaniu pliku w stopce grzywny, choć. Co jeszcze muszę zrobić?
function starter_scripts() {
wp_enqueue_style( 'starter-style', get_stylesheet_uri() );
wp_enqueue_script( 'jquery', '', '', '', true );
wp_enqueue_script( 'includes', get_template_directory_uri() . '/js/min/includes.min.js', '', '', true );
}
add_action( 'wp_enqueue_scripts', 'starter_scripts' );
defer
zamiast tego rozważyć dodanie tagów skryptu: matthewhorne.me/defer-async-wordpress-scriptsOdpowiedzi:
Aby to zrobić, najpierw musisz wyrejestrować skrypt jQuery, a następnie zarejestrować się ponownie. Jeśli używasz jQuery pochodzi z WordPress, to jest funkcja, której szukasz.
Jeśli używasz wersji jQuery obsługiwanej przez Google CDN, daj mi znać, że zmodyfikuję ten kod dla adresu URL Google CDN.
źródło
wp_enqueue_scripts
jest używany tylko w interfejsie użytkownika, podczas gdyadmin_enqueue_scripts
jest używany wOto kolejna opcja, która pozwala uniknąć konieczności wyrejestrowywania i ponownej rejestracji:
To rozwiązanie naśladuje rdzeń WordPress , ustawiając na
group
to1
, w ten sposób WordPress określa, czy skrypt powinien znajdować się w stopce, czy nie (nie znam uzasadnienia1
, jak zauważył @jgraup w komentarzach, wydaje się to nieco arbitralne).źródło
wp_register_script
służyadd_data( $handle, 'group', 1 )
do przenoszenia skryptów do stopki. core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/… - Czy możesz wyjaśnić , dlaczego tak jest? Patrząc na twój kod, „grupa” wydaje się nieco arbitralna. Ale widzę w core.trac.wordpress.org/browser/tags/4.5/src/wp-include/… jak to jest używane w WP_Scripts->do_item
później. Tak czy inaczej, wydaje się to być najmniej destrukcyjną odpowiedzią.Lepsze rozwiązanie:
Dlaczego lepiej niż zaakceptowana odpowiedź IMO
$footer = true
.O nie robieniu tego administratorowi
Jeśli wtyczki dodadzą wbudowaną jquery do wp_head, zakończy się niepowodzeniem, gdy jquery nie zostanie w tym momencie załadowane, więc sugeruję, aby tego unikać, dopóki miliony nie edytują witryny i nie spróbujesz zoptymalizować wydajności administratora. Dotyczy to również nakładki, dlatego należy uważać na źle zakodowane kompozycje lub wtyczki, które zakładają jquery w głowie za pomocą wbudowanego kodu jQuery. WP i wtyczki rejestrują inne skrypty do administratora z jquery w deps, więc myślę, że i tak nie działałoby.
O tym nie działa
Musisz być świadomy, że jeśli jakikolwiek inny skrypt zostanie załadowany do nagłówka, który ma jQuery w swoich zależnościach, spowoduje to również załadowanie jQuery do nagłówka tuż przed sobą. Jest to dobre i oczekiwane powód, dla którego istnieje system wp_enqueue. Oznacza to, że wkrótce się dowiesz, jeśli użyjesz kilku wtyczek, że jedna z nich będzie wymagać wywoływania szumu w głowie. To niestety domyślna kolejka skryptów.
Radykalne rozwiązanie
Myślę, że to zahamuje każdy wbudowany JS, który zakłada jquery, ale powinien to być rzadki. Zmusi to wszystkie skrypty do stopki, niezależnie od tego, jak są kolejkowane.
źródło
Opracowałem wtyczkę do tego konkretnego problemu. Ta wtyczka nie zadziera z jQuery WordPress, ponieważ jest ładowana tylko w interfejsie. Zobacz: jQuery Manager dla WordPress
Prawie wszyscy używają niewłaściwego uchwytu
WordPress faktycznie używa uchwytu jquery-core, a nie jquery:
Właściwy sposób to zrobić
W poniższym przykładzie używam oficjalnego CDN jQuery pod adresem https://code.jquery.com. Używam także script_loader_tag, aby móc dodać niektóre atrybuty CDN.
Możesz użyć następującego kodu:
źródło
źródło
Hej, zmień tylko swój kod, aby to polubić
myślę, że działa dobrze
dodaj te linie do pliku functions.php
następnie dodaje skrypt do stopki
źródło
remove_action
/,add_action
jeśli zamierzasz to zrobić w ten sposób.