jQuery in WordPress - Perché non funziona? Guida alla risoluzione

25 lug 2012, 00:21:04
Visualizzazioni: 14.4K
Voti: 2

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!

1
Commenti

(function($){})(window.jQuery); è un metodo incapsulato (per evitare di inquinare lo spazio dei nomi globale), quindi non vedo come $ potrebbe essere disponibile al di fuori di quella funzione.

Joseph Leedy Joseph Leedy
25 lug 2012 05:39:14
Tutte le risposte alla domanda 2
0

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

25 lug 2012 00:36:13
3

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.

25 lug 2012 00:25:05
Commenti

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

Milo Milo
25 lug 2012 00:56:10

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

Sven Sven
25 lug 2012 01:41:11

È 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.

mrwweb mrwweb
25 lug 2012 19:33:02