Robię to teraz za pomocą następującego kodu:
function uw_load_scripts() {
// De-register the built in jQuery
wp_deregister_script('jquery');
// Register the CDN version
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', array(), null, false);
// Load it in your theme
wp_enqueue_script( 'jquery' );
}
add_action( 'wp_enqueue_scripts', 'uw_load_scripts' );
To działa, ale czy powinienem to zrobić dla wszystkich, jak ten, czy dla wszystkich oprócz administratora (aby backend korzystał z wersji WordPress?):
if (function_exists('load_my_scripts')) {
function load_my_scripts() {
if (!is_admin()) {
wp_deregister_script( 'jquery' );
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', array(), null, false);
wp_enqueue_script('jquery');
}
}
}
add_action('init', 'load_my_scripts');
Ta wersja w ogóle nie działa, otrzymuję wersję jQuery WordPress, a nie wersję Google.
Dlatego powinienem w ogóle wyrejestrować jQuery zawarte w WordPress?
Ponadto, w jaki sposób mogę dodać własne skrypty (skrypty suwaka, modernizator i własne custom.js) we właściwy sposób? Myślę, że powinienem to zrobić również poprzez functions.php, a nie w nagłówku, tak jak teraz, ale nie jestem pewien, jak bym to zrobił.
wp_enqueue_script()
wywołaniach wystąpił błąd składniowy .$in_footer
parametr true w swoim wywołaniu dowp_enqueue_script()
.Mam nadzieję, że to pomoże, sprawdź kodeks, aby
wp_enqueue_scripts
uzyskać więcej informacji.init
do kolejkowania . Użyjwp_enqueue_scripts
do frontendów iadmin_enqueue_scripts
po stronie administratora. Możesz jednak użyćinit
do zarejestrowania skryptów.wp_enqueue_scripts
strzela tylko z przodu (a nie ze strony logowania) - więc nie musisz sprawdzaćis_admin()
.Chyba że masz konkretny powód, by zrobić inaczej, chciałbym zaproponować rejestracji i kolejek przy użyciu skryptów
functions.php
do tematów lub w plug-in inaczej. Po prostu stawiasz:Jeśli celem jest kolejkowanie skryptu, gdy używany jest krótki kod, możesz użyć go
wp_enqueue_script
w wywołaniu zwrotnym shortcode, aby ustawić go w kolejce tylko w razie potrzeby (spowoduje to wydrukowanie go w stopce od wersji 3.3 ).Nie powinieneś ponownie rejestrować istniejącego jQuery po stronie administratora. Możesz coś złamać: D.
Wtyczki nie powinny ponownie rejestrować istniejącego jQuery.
Powinieneś rozważyć zalety i wady ponownej rejestracji jQuery. Na przykład może uszkodzić niektóre wtyczki, jeśli zarejestrujesz starą wersję (może nie teraz, ale w przyszłości ...)
źródło
Uczciwe ostrzeżenie: wyrejestrowanie spakowanej wersji jQuery w pakiecie WP na własną rękę może powodować problemy, szczególnie jeśli nie jesteś bardzo ostrożny, aby upewnić się, że zmieniasz wersję, na którą wskazujesz, za każdym razem, gdy WP aktualizuje swoją wersję. Dotyczy to podwójnie wtyczek, które często (lub często powinny przynajmniej) piszą swoje wtyczki, aby uzyskać maksymalną kompatybilność z wersją WP jQuery.
To powiedziawszy, twoja pierwsza wersja jest poprawna - jest uzależniona
wp_enqueue_scripts
. Twoja druga funkcja jest uzależniona od tegoinit
, co może być przyczyną jej nieprawidłowego działania.Dodaj własne skrypty w podobny sposób:
Zakładam, że ładujesz skrypty z
js
katalogu w bieżącym katalogu motywów; zmień parametr URI, jeśli to nieprawda. Trzeci parametrarray( 'jquery' )
mówi, że tobbg-scripts
zależyjquery
i dlatego należy go później załadować. Zobacz https://codex.wordpress.org/Function_Reference/wp_enqueue_script, aby uzyskać więcej informacji.źródło
To nic nie da ... Podejrzewam, że masz na myśli
Twój przykład załaduje funkcję load_my_scripts tylko wtedy, gdy już istnieje (czego nie ma, więc nie będzie, a jeśli to zrobi, spowoduje błąd)
źródło
Jeśli ze względu na wydajność chcesz załadować jquery i inne podstawowe pliki js z CDN, upewnij się, że ładujesz tę samą wersję, aby zapobiec nieprzyjemnym sytuacjom z funkcjami rdzenia i wtyczek. Lubię to:
źródło
Po sprawdzeniu różnych metod ładowania jquery (nie tylko w tym poście), zdałem sobie sprawę, że żadna z nich nie wykonuje wszystkich z nich:
Istnieje wiele alternatywnych wersji, które robią niektóre z nich na liście, ale nie wszystkie, więc napisałem swoją wersję, czesając i modyfikując niektóre z już dostępnych metod. Oto on:
Aby zaoszczędzić przepustowość i nie pingować Google za każdym razem, gdy strona jest ponownie ładowana, pamięta, czy Google CDN jest w trybie online, czy nie przez 5 minut za pomocą Wordpress Transient API.
źródło