Încarcă jQuery în WordPress
Construind prima mea temă de la zero în WordPress 3.4.1, știu că WordPress are deja ultima versiune de jQuery via Google. Am citit despre probleme care pot apărea dacă scriptul nu este apelat corect, așa că vreau să mențin totul cât mai aproape de codul recomandat. Vreau să mă asigur că scriptul este încărcat, ceea ce cred că se realizează prin scriptul PHP de mai jos în fișierul functions.php (preluat din WordPress Codex).
<?php
// Funcție pentru încărcarea scripturilor
function my_scripts_method() {
wp_enqueue_script( 'jquery' );
}
Vreau să creez un meniu personalizat folosind jQuery, deci este suficient să plasez scriptul pe care doresc să-l activez în header sau în secțiunea PHP?
De asemenea, dacă doresc să încarc un alt script care nu este inclus deja în WordPress, trebuie doar să adaug codul PHP de mai jos în codul de mai sus din fișierul functions.php?
wp_register_script( 'jqueryexample', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jqueryexample.min.js');
Mă descurc bine cu HTML și CSS, dar PHP și JavaScript sunt relativ noi pentru mine, orice ajutor este apreciat.
Mulțumesc,
Ant

Trebuie să folosești wp_enqueue_script
pentru a încărca scriptul pentru tema ta, funcția wp_register_script
doar înregistrează scriptul cu un cuvânt cheie.
wp_register_script( 'jqueryexample', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jqueryexample.min.js');
Aceasta va înregistra pur și simplu un nou script cu numele jqueryexample
și poți încărca acel script ori de câte ori este necesar folosind funcția wp_enqueue_script
.
Iată un exemplu de cod pentru a încărca un script deja înregistrat, cum ar fi jQuery, și un script nou propriu, cum ar fi jQuery Example
<?php
function wpse_60056_load_scripts() {
wp_enqueue_script( 'jquery' );
wp_register_script( 'jqueryexample', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jqueryexample.min.js');
wp_enqueue_script( 'jqueryexample' );
}
add_action('wp_enqueue_scripts', 'wpse_60056_load_scripts');
?>
Totuși, poți folosi doar funcția wp_enqueue_scripts
pentru a încărca un JavaScript de la distanță, Iată un exemplu -
wp_enqueue_script('jqueryexample','http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jqueryexample.min.js');

Amit, mulțumesc pentru asta și am ratat acest lucru înainte, apreciez foarte mult.

+1 Notă începând cu versiunea 3.3 poți folosi wp_enqueue_script
în interiorul callback-urilor shortcode-urilor/widget-urilor (sau altfel în corpul paginii). Asta înseamnă că poți înregistra un script pe hook-ul wp_enqueue_scripts
și apoi doar să-l încarci efectiv când este necesar.

Util de știut, presupun că totul se reduce la optimizarea paginii web, mulțumesc Stephen.

Când încarci un script așa cum sugerează Stephen Harris, scripturile vor fi plasate în subsol. Ține cont de acest lucru atunci când scriptul tău ar trebui să fie încărcat înaintea altora. De asemenea, dacă chiar dorești să forțezi încărcarea unui script în subsol, poți seta al 5-lea argument al funcțiilor 'wp_enqueue_scripts' sau 'wp_register_script' la true (Codex: http://codex.wordpress.org/Function_Reference/wp_enqueue_script).

Ești pe drumul cel bun, dar lipsește o piesă:
add_action('wp_enqueue_scripts', 'my_scripts_method');
add_action
îți permite să rulezi cod în momente specifice în timpul încărcării paginii / la anumite evenimente. Acțiunea de mai sus îi spune WordPress să ruleze funcția ta atunci când adaugă scripturile în elementul head al paginii. Funcția ta la rândul ei instruiește WP să adauge scriptul jQuery.
Același lucru este valabil și pentru înregistrarea unui nou script, dar cu un alt hook:
add_action('wp_enqueue_scripts', 'my_register_script_method');
function my_register_script_method () {
wp_register_script( 'jqueryexample', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jqueryexample.min.js');
}
Dacă suprascrii un script deja înregistrat, ar trebui mai întâi să-l dezînregistrezi. Folosesc cod similar cu următorul pentru a înlocui scriptul jQuery (notă: citește cel de-al doilea edit de la final):
function my_register_script_method () {
wp_deregister_script('jquery');
wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jqueryexample.min.js');
}
În ceea ce privește locul unde ar trebui să pui acest cod: dacă codul este specific temei, ar trebui să-l plasezi în fișierul functions.php din directorul temei. Dacă intenționezi să folosești codul în mai multe teme, ar fi mai ușor să menții un plugin cu toate funcțiile comune.
Edit:
După cum notează Stephen Harris mai jos, începând cu WordPress 3.3 poți folosi wp_enqueue_scripts
chiar și după ce wp_head
a fost declanșat, de exemplu în shortcode-uri sau widget-uri. JavaScript-ul va fi încărcat apoi în footer.
Edit 2: Pentru jQuery și alte librării găzduite de Google, este recomandat să folosești http://wordpress.org/extend/plugins/use-google-libraries/ Citește comentariile pentru o motivație din partea lui Otto.

W van Dam, mulțumesc foarte mult pentru răspunsul rapid și informațiile oferite, voi pune asta în practică. Momentan doar o singură temă (nu vreau să alerg înainte de a putea măcar să mă târăsc) dar interesant ce spui despre un plugin. Noroc, Ant

Cu plăcere. Amit adaugă și el un punct bun. Orice scripturi pe care le înregistrezi, trebuie să le și adaugi în coadă. Un alt sfat: Dacă ai nevoie de jQuery doar pe anumite pagini, folosește tag-uri condiționale, cum ar fi is_home(), pentru a încărca scriptul doar pe acele pagini. Asta face site-ul tău mai eficient. Probabil nu e relevant pentru cazul tău actual, dar poate fi util mai târziu. (Pagina Codex: http://codex.wordpress.org/Conditional_Tags)

Dam, asta e foarte util și voi ține minte, vreau să asigur o viteză bună a site-ului web așa că are sens ce spui. Doar îmi doresc să pot folosi unele tranziții CSS3 dar IE mă dezamăgește la capitolul ăsta și sunt destul de ușor de codat.

Nicio problemă. PS. Ai putea să votezi sau să accepti răspunsul meu? Aș dori să adaug un comentariu la ceea ce a spus Stephen Harris mai sus, dar momentan încă mai am nevoie de un vot pentru a putea comenta la răspunsurile altora. Stack exchange este minunat, dar în unele privințe poate fi enervant.

Gata, fără griji. Cred că sistemul de recompense funcționează într-un fel și cam așa se acordă punctele, cel puțin am primit răspunsuri aici și rapid.

Vă rog să nu folosiți acea metodă pentru a include scriptul jQuery de la Google. Metoda menționată mai sus nu funcționează și va cauza conflicte cu alte scripturi, precum și alte probleme. Folosiți în schimb plugin-ul "Use Google Libraries", dacă doriți să utilizați versiunile de biblioteci găzduite de Google. Acest plugin face lucrurile corect și este actualizat frecvent. Metoda menționată mai sus va funcționa doar superficial și va cauza probleme pe termen lung.

Mulțumesc pentru avertizare, Otto. Am folosit acel plugin mai devreme, dar l-am considerat exagerat doar pentru acea singură bibliotecă.

(Scuze, am apăsat enter prea devreme). @Otto Te referi la scriptul noconflict și informațiile despre versiune care sunt trimise împreună? Sau este ceva mai mult la mijloc?

@WvanDam Da, problema noconflict există, dar adevărata problemă este că dacă modifici asta manual, atunci când nucleul se actualizează, versiunea ta veche poate strica nucleul. Este mai bine să folosești întotdeauna cea mai recentă versiune și să utilizezi un plugin care va fi menținut actualizat odată cu nucleul.
