Więc używam Starkers do oparcia mojego następnego motywu WP i napotkałem mały problem. Włączyłem do header.php
pliku moją własną wersję jQuery , ale podczas sprawdzania mojej witryny za pomocą Firebug zauważyłem, że jquery jest pobierane dwukrotnie, ja zrobiłem trochę kopania i zauważyłem, że nie tylko włączałem plik, ale także wp_head()
funkcja.
Próbując rozwiązać problem, zauważyłem komentarz w pliku nagłówkowym, którego źródło pochodzi z motywu Dwadzieścia Dziesięciu:
/* Always have wp_head() just before the closing </head>
* tag of your theme, or you will break many plugins, which
* generally use this hook to add elements to <head>, such
* as styles, scripts, and meta tags
*/
Więc oto mój problem, mam wrażenie, że plik jQuery musi zostać ustawiony przed jakimkolwiek innym plikiem, który chce go użyć i że wp_head()
powinien to być ostatni <head>
element w elemencie, jestem teraz trochę zdezorientowany, bo zastanawiam się, czy powinienem włożyłemwp_head()
na górze, więc plik jQuery dołączony do WP będzie używany we wszystkich moich wtyczkach, nawet jeśli mówi, żeby tego nie robić.
Skomentowałem linię jQuery w wp_head()
funkcji, ale jest ona wymagana dla strony administratora, więc musiałem ją odłożyć.
Chciałbym również użyć (przynajmniej eksperymentować) z użyciem jQuery w wersji Google CDN, ale nie chcę dołączać jej dwukrotnie!
Mam nadzieję, że rozumiesz, co próbuję wyjaśnić. Wszelkie sugestie dotyczące rozwiązania tego problemu byłyby bardzo mile widziane. Doceniam również wszelkie porady dotyczące obsługi plików JavaScript za pomocą pliku nagłówkowego.
Dzięki!
źródło
Odpowiedzi:
Z treści pytania należy dodawać skrypty, pisząc
<script>
tagi w szablonie. Dodaj własne skryptywp_enqueue_script()
w szabloniefunctions.php
, odpowiednio ustawiając zależności od jQuery, iwp_head()
doda skrypty dla ciebie.Zobacz stronę kodeksu, aby uzyskać więcej informacji.
źródło
<script>
znacznika, to jest alternatywa, której szukałem, wielkie dzięki! :-)'template_redirect'
zamiast'init'
.is_admin()
.get_header()
, wykonanie tegofunctions.php
spowoduje umieszczenie go w kolejce na każdej stronie, co może nie być wymagane. Jeśli mam globalny, umieszczam go w kolejceheader.php
przedwp_head()
wywołaniem. W ten sposób kolejki są tam, gdzie można się spodziewać<head>
Proponuję rzucić okiem 5 porad dotyczących używania jQuery z WordPress . Pokazuje między innymi kod niezbędny do załadowania jQuery z biblioteki Google:
Możesz również sprawdzić wtyczkę Użyj bibliotek Google .
źródło
template_redirect
zamiastinit
.Chociaż @tnorthcutt ma rację, że powinieneś poprawnie usunąć kolejkę natywnej jquery WP, jeśli chcesz załadować własną, na pewno napotkasz problemy podczas ładowania innej wersji jquery niż rdzeń WP. Zarówno rdzeń, jak i wtyczki polegają na tym, że tam jest. Więc jeśli nie zaktualizujesz swojego motywu najnowszą jquery za każdym razem, gdy WP jest aktualizowany, Twoja strona może się zepsuć.
Poniższy kod upewni się, że Twój motyw zawsze ładuje poprawną wersję jquery, najpierw sprawdzając, której wersji używa WP, a następnie ładując ją z Google:
źródło