Cum să Incluzi Fișiere jQuery/Javascript Externe în WordPress
Folosesc Starkers ca bază pentru următoarea mea temă WP și am întâmpinat o mică problemă. Includeam propria versiune de jQuery în fișierul header.php
, dar când am inspectat site-ul folosind Firebug am observat că jQuery era descărcat de două ori. După ce am investigat, am observat că nu doar eu includeam fișierul, ci și funcția wp_head()
.
Încercând să rezolv problema, am observat un comentariu în fișierul header, care provine inițial din tema Twenty Ten:
/* Întotdeauna folosește wp_head() chiar înainte de tag-ul de închidere </head>
* al temei tale, altfel vei strica multe plugin-uri, care
* în general folosesc acest hook pentru a adăuga elemente în <head>, cum ar fi
* stiluri, scripturi și meta tag-uri
*/
Iată problema mea: am impresia că fișierul jQuery trebuie setat înainte de orice alt fișier care vrea să-l utilizeze și că wp_head()
ar trebui să fie ultimul lucru din elementul <head>
. Sunt puțin confuz acum și mă întreb dacă ar trebui să pun wp_head()
la început pentru ca fișierul jQuery inclus de WP să fie folosit pentru toate plugin-urile mele, deși se specifică să nu fac asta.
Am comentat linia jQuery din funcția wp_head()
, dar este necesară pentru pagina de administrare, așa că a trebuit să o pun înapoi.
De asemenea, aș dori să folosesc (cel puțin să experimentez) cu versiunea jQuery de la Google CDN, dar nu vreau să o includ de două ori!
Sper că înțelegeți ce încerc să explic. Orice sugestii despre cum pot rezolva această problemă ar fi apreciate. De asemenea, aș aprecia orice sfat despre cum gestionați fișierele JavaScript în fișierul header.
Mulțumesc!

Din formularea întrebării tale, probabil adaugi scripturi scriind tag-uri <script>
în template. Adaugă propriile scripturi folosind wp_enqueue_script()
în functions.php
al template-ului tău, setând corespunzător dependențele de jQuery, iar wp_head()
va adăuga scripturile pentru tine.
function my_scripts() {
wp_enqueue_script( 'my-sweet-script', get_bloginfo('template_directory') . '/script.js', array('jquery') );
}
add_action('template_redirect', 'my_scripts');
Vezi pagina din codex pentru mai multe informații.

Ai dreptate să crezi că adaug scripturi folosind tag-ul <script>
, aceasta era alternativa pe care o căutam, mulțumesc mult! :-)

Dacă vrei să adaugi scriptul tău doar în partea de front end, folosește hook-ul 'template_redirect'
în loc de 'init'
.

Foarte bine, voi actualiza răspunsul meu. Aproape că am sugerat să încapsulez enqueue în is_admin()
.

În general, încarc scripturile în fișierul template înainte de get_header()
, făcând acest lucru în functions.php
le va încărca pe fiecare pagină, ceea ce poate să nu fie necesar. Dacă am un script global, îl încarc în header.php
înainte de apelarea lui wp_head()
. În acest fel, scripturile încărcate vor fi acolo unde te-ai aștepta să le găsești în <head>

Uneori este mai bine să adăugați scripturile la sfârșitul paginii. Acesta este ultimul parametru al http://codex.wordpress.org/Function_Reference/wp_enqueue_script (al 5-lea, $in_footer), setați-l la true. O mică informație pentru cei care au nevoie de mai mult control.

Vă sugerez să aruncați o privire la 5 sfaturi pentru utilizarea jQuery cu WordPress. Printre altele, articolul arată codul necesar pentru încărcarea jQuery din biblioteca Google:
function my_init() {
if (!is_admin()) {
// comentează următoarele două linii pentru a încărca versiunea locală de jQuery
wp_deregister_script('jquery');
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js', false, '1.3.2');
wp_enqueue_script('jquery');
}
}
add_action('init', 'my_init');
De asemenea, puteți consulta și plugin-ul Use Google Libraries.

Acesta este de fapt un răspuns mai bun, deoarece arată cum să încarci versiunea jQuery de pe CDN-ul Google. Totuși, așa cum a sugerat John în altă parte, dacă vrei să faci asta doar pe front-end, folosește hook-ul template_redirect
în loc de init
.

Bună observație legată de locul unde se încarcă. Deși, în realitate, zona de administrare folosește și ea jQuery, nu? Oricum, mulțumesc pentru așa cum ai arătat cum să controlezi acest lucru.

Da, tocmai am găsit postarea cu 5 sfaturi despre jQuery/WP, mulțumesc pentru răspuns :-)

5 sfaturi pentru utilizarea jQuery cu WordPress -- link-ul nu mai funcționează.

NOTĂ: Exemplul include o versiune "mai veche" de jQuery, versiunea actuală de WP (3.0.1) rulează jQuery 1.4.2 ...

Deși @tnorthcutt are dreptate că ar trebui să dezactivezi corect jquery-ul nativ din WordPress dacă vrei să încarci propria versiune, vei întâmpina cu siguranță probleme când încarci o altă versiune de jquery decât cea din nucleul WP. Atât nucleul, cât și plugin-urile se bazează pe prezența acestuia. Așadar, dacă nu actualizezi tema ta cu cea mai nouă versiune de jquery de fiecare dată când WordPress este actualizat, site-ul tău poate avea probleme.
Următorul cod va asigura că tema ta încarcă întotdeauna versiunea corectă de jquery, verificând mai întâi ce versiune folosește WordPress și apoi încărcând aceeași versiune de la Google:
$wp_jquery_version = $GLOBALS['wp_scripts']->registered['jquery-core']->ver;
$jquery_version = ( $wp_jquery_version == '' ) ? '1.8.3' : $wp_jquery_version; // rezervă, pentru orice eventualitate
wp_deregister_script('jquery');
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/'. $jquery_version .'/jquery.min.js', $jquery_version, false );
wp_enqueue_script('jquery');
