Come dire a WordPress che jQuery è già presente nella pagina per evitare duplicati via wp_enqueue_scripts

8 mag 2012, 18:01:40
Visualizzazioni: 269
Voti: 0

Per ridurre le richieste HTTP, sto combinando tutti gli script utilizzati dal mio tema in un singolo file .js minificato ogni volta che vengono salvate le opzioni del tema.

Uno dei file inclusi in questo .js è la libreria jQuery.

Invece di includere jQuery come file separato (usando wp_enqueue_scripts), sto includendo il file jQuery core di WordPress come parte dello stream di output di questo file .js principale.

Il problema è che poiché non sto usando wp_enqueue_scripts() per caricare jQuery, c'è la possibilità che venga incluso più volte nella pagina tramite un plugin che non sa che è già presente.

Posso impostare un flag per far sapere a WordPress che il file è già presente nella pagina?

0
Tutte le risposte alla domanda 3
5

I temi non dovrebbero occuparsi della minimizzazione del codice. Questa è competenza dei Plugin. I temi sono presentazionali, non funzionali.

Cercando di aggiungere la minimizzazione del JS nel Tema, stai di fatto impedendo a un Plugin di caching di svolgere questa funzione, e potenzialmente introducendo problemi (come il caricamento duplicato della libreria jQuery).

8 mag 2012 18:06:21
Commenti

Diversi temi (incluso il mio) includono un widget slider che richiede jQuery per funzionare. Secondo te, gli slider che richiedono js dovrebbero sempre essere separati in un plugin?

Scott B Scott B
8 mag 2012 19:13:58

Non la vedo così. Il Tema richiede che jQuery sia accodato, quindi lo accoda correttamente. Questo è tutto chiaramente dalla parte presentazionale della linea. La minificazione del JS è altrettanto chiaramente dalla parte funzionale di quella linea. E i metodi non standard per accodare librerie di script, oltre ad essere funzionali, sono anche una pratica da scoraggiare sia nei Temi che nei Plugin.

Chip Bennett Chip Bennett
8 mag 2012 19:17:15

Ah, ora capisco meglio il tuo punto. Non sei contrario al fatto che il tema includa jQuery, solo all'inclusione in un modo "non standard" (combinare script del template in un unico file minificato) che dovrebbe essere lasciato a un plugin perché è funzionale. Posso accettarlo come principio guida, ma credo che dovrebbe esserci un modo per abbracciare le best practice del web design/dev (ridurre le richieste HTTP, minificare gli script) senza richiedere un plugin.

Scott B Scott B
8 mag 2012 19:38:20

Idealmente, se potessi caricare tutti i miei script in una singola chiamata wp_enqueue_scripts e passare un parametro in modo che il risultato finale fosse un unico file .js contenente tutti i file, è quello che cerco. Va bene lasciare la minificazione a ottimizzatori di terze parti.

Scott B Scott B
8 mag 2012 19:48:02

"dovrebbe esserci un modo per abbracciare le migliori pratiche nel design/sviluppo web (ridurre le richieste HTTP, minificare gli script) senza richiedere un plugin" - Cosa c'è di sbagliato in un Plugin? Sia i Temi che i Plugin utilizzano la stessa API dei Plugin per fare le stesse cose. In questo caso, la migliore pratica è separare la presentazione dalla funzione, quindi inserire la minificazione in un Plugin è l'approccio migliore.

Chip Bennett Chip Bennett
8 mag 2012 20:18:01
4

Non dovresti davvero farlo, non è una buona pratica. Dovresti sempre utilizzare la versione di jQuery fornita con il pacchetto WordPress. Se usi la tua versione di jQuery nel tuo file, dovrai aggiornarla manualmente ogni volta che jQuery viene aggiornato nel pacchetto WordPress.

Se insisti davvero a farlo, la soluzione più semplice e improvvisata che mi viene in mente è prima deregistrare il jQuery originale, poi registrare il tuo file (minified.js) come jQuery. Sicuramente prima o poi incorrerai in problemi di incompatibilità con i plugin.

8 mag 2012 18:08:21
Commenti

Penso che l'OP intenda effettivamente utilizzare la versione di jQuery inclusa nel core, tramite wp_enqueue_script( 'jquery' ); vuole semplicemente accodarla in modo personalizzato che consentirebbe al Tema di minimizzare i suoi script.

Chip Bennett Chip Bennett
8 mag 2012 18:15:56

@ChipBennett Non proprio, leggi il terzo paragrafo della sua domanda. :)

Mateusz Hajdziony Mateusz Hajdziony
8 mag 2012 18:19:30

Scusa, lasciami riformulare. :) Penso che l'OP intendesse usare la versione inclusa nel core di jQuery, ma vuole accodarla in maniera personalizzata. In ogni caso, penso che la premessa sia fuorviante.

Chip Bennett Chip Bennett
8 mag 2012 18:31:14

@Chip Bennett: Sì, è corretto. Sto utilizzando la versione inclusa nel core, ma invece di includerla come file autonomo, la sto combinando con gli altri script da cui dipende il mio tema (slider.js, webfonts.js, ecc.) in un unico file .js minificato.

Scott B Scott B
8 mag 2012 18:38:29
0

Il plugin Dependency Minification svolge egregiamente il lavoro per me, evitandomi di gestire manualmente la minificazione e la concatenazione.

27 ott 2015 14:27:02