jQuery in WordPress - Perché non funziona? Guida alla risoluzione
Sto utilizzando questo come template di partenza: www.html5reset.org/
È piuttosto carino, ma credo ci sia qualcosa che non va con jQuery.
Nel file functions.php
c'è scritto:
// Carica jQuery
if ( !function_exists(core_mods) ) {
function core_mods() {
if ( !is_admin() ) {
wp_deregister_script('jquery');
wp_register_script('jquery', ("//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"), false);
wp_enqueue_script('jquery');
}
}
core_mods();
}
A me sembra corretto - è tutto a posto?
C'è anche un file JS predefinito. In questo file c'è scritto:
// rimappa jQuery a $
(function($){})(window.jQuery);
Non so esattamente cosa faccia, ma sembra comunque ok.
Per testare se jQuery funziona, ho provato quanto segue - nessuno di questi esempi funziona, jQuery non è definito.
$(document).ready(function() {
alert("Questo è un test.");
});
jQuery(document).ready(function() {
alert("Questo è un test.");
});
$(document).ready(function($) {
alert("Questo è un test.");
});
Quindi, puoi dirmi cosa potrebbe non funzionare? Grazie!

solo per aiutare un po' di più... WordPress esegue jQuery in modalità 'sicura'
il che significa che in WordPress devi scrivere il codice così
jQuery(document).ready(function() {
e non così
$(document).ready(function() {
Ma quello che ha fatto HTML5BP è aggiungere questo strano pezzo di codice (probabilmente gentilmente per aiutare gli Sviluppatori)
// remappa jQuery a $<br/>
(function($){})(window.jQuery);
Per tua informazione, c'è un 3° metodo per tornare al simbolo $ per jQuery che è iniziare il tuo codice così:
jQuery(document).ready(function($) {
da questo punto in poi nel tuo codice puoi ora usare $ per riferirti a jQuery

C'è un errore di battitura in wp_register_script()
dove manca "http:" nell'URL. Correggi quello e almeno caricherai jQuery.
Come nota a margine, molti considerano una pratica non ottimale sovrascrivere il jQuery predefinito di WordPress e ho rimosso il codice a cui ti riferisci dal mio tema personalizzato HTML5reset che utilizzo.

Questo è un URL relativo al protocollo, ma sembra che WordPress non riesca a gestirli.

Perfetto, grazie! L'ho anche rimosso e ora funziona. Hai qualche risorsa che spiega perché è considerata una cattiva pratica?

È un requisito della "Revisione del tema" per l'inclusione nel repository .org. Lasciando jQuery così com'è, ti assicuri che WordPress e altri plugin possano assumere in sicurezza quale versione di jQuery stai utilizzando. Puoi evitare questo problema assicurandoti che tutti i tuoi temi siano aggiornati per utilizzare la versione standard di jQuery di WP corrente, ma è piuttosto difficile da mantenere.
