Quando dovrei usare wp_register_script () con wp_enqueue_script () vs just wp_enqueue_script ()?


55

Ho difficoltà a capire quando devi usarlo wp_register_script(). Attualmente, uso solo qualcosa del tipo:

add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
function enqueue() {
    $handle = 'some-handle';
    $js = 'http://example.com/my.js';
    wp_register_script( $handle, $js );
    wp_enqueue_script( $handle );
}

Ho letto molto (codice, blog, ecc.), Ma non riesco a capire quando devo prima registrarmi o quando devo solo accodarmi. Ad esempio, ho notato che TwentyTwelve non registra alcuno stile o script, ma li accoda.

Risposte:


50

La wp_register_script()pagina del Codex dice letteralmente:

Un modo sicuro di registrare javascript in WordPress per un uso successivo con wp_enqueue_script().

Ciò significa che se desideri registrare i tuoi script, ma non caricarli direttamente nelle tue pagine, puoi registrare i file una volta e caricarli quando ne hai bisogno.

Per esempio:

Hai un'istruzione switch che carica alcune funzionalità, ma due su tre casi richiedono un particolare file javascript e uno no. Puoi accodare lo script ogni volta, il che costa più risorse o semplicemente accodare lo script quando ne hai bisogno:

...
wp_register_script( 'my-handy-javascript', ... );
...
switch( $somevar ) {
    case 'value':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    case 'value2':
        wp_enqueue_script( 'my-handy-javascript' ); // needs the file
        ...
    break;
    default:
    case 'value3': // doesn't needs the file
        ...
    break;
}

Non è necessario registrare uno script e quindi accodarli, ma può fornire un po 'di logica nel tuo codice se registri tutti gli script di cui hai bisogno da qualche parte nel tuo functions.phpinvece che ovunque nel tuo codice.

Il Codice dice anche quanto segue:

Utilizzare l' wp_enqueue_scriptsazione per chiamare questa funzione o admin_enqueue_scriptsper chiamarla sul lato amministratore.

Ciò significa che se si desidera accodare lo script sul front-end e sul back-end, è possibile registrare uno script una volta, quindi caricarlo sul front-end con wp_enqueue_scripte nel back-end con admin_enqueue_script.
In questo modo non avrai lo stesso accodamento ricorso due volte in un tema, plugin, widget o altro.


Grazie. Ciò ha chiarito molto. Quindi, pensi che TwentyTwelve non si preoccupi di registrarsi per primo dal momento che li caricherà di sicuro?
Akted

Questo sicuramente potrebbe essere una possibilità. Non so come sia costruito il tema Twenty Twelve poiché non lo uso mai, ma sicuramente avranno le loro ragioni per enqueuesostituirlo register.
Mike Madern,

2
In tal senso, non sono d'accordo con "Puoi accodare la sceneggiatura ogni volta, il che costa più risorse, o semplicemente accodare la sceneggiatura quando ne hai bisogno". Nel tuo codice di esempio, potresti rimuovere la chiamata di registro e invece avere più chiamate equivalenti a pieno titolo (con $ src arg) a wp_enqueue_style(). Questo sarebbe solo uno sforzo di battitura maggiore, ma non comporterebbe maggiori requisiti di risorse. Corretta?
Jan-Philip Gehrcke,

7
Un punto che è stato finora escluso da tutte le spiegazioni è che puoi usare wp_register_script()solo per registrare uno script in modo che possa essere usato come dipendenza per altri script e solo caricato con loro, senza mai essere accodato direttamente.
JHoffmann,

1
Anche se questo lo spiega bene, consiglierei di leggere anche questa risposta .
lowtechsun,

8

IMHO il principale vantaggio dell'uso wp_register_scriptprecedente wp_enqueue_scriptsè illustrato nel seguente paragrafo del Codice :

Gli script che sono stati pre-registrati utilizzando wp_register_script () non devono essere accodati manualmente utilizzando wp_enqueue_script () se sono elencati come dipendenza di un altro script accodato. WordPress includerà automaticamente lo script registrato prima che includa lo script accodato che elenca l'handle dello script registrato come dipendenza.

Se ritieni di non averne bisogno (ad esempio perché sei sicuro al 100% che il tuo script non sarà coinvolto in alcuna dipendenza), probabilmente puoi andare direttamente con wp_enqueue_scripts, senza un preliminare wp_register_script.


2

Ho esaminato alcuni articoli e sono giunto alla seguente conclusione. Penso che aiuti.

  1. La registrazione di qualsiasi script utilizzando wp_register_script()è solo la registrazione; non caricarlo. Lo script registrato non verrà caricato fino a quando non viene accodato utilizzando wp_enqueue_script().
  2. Non abbiamo bisogno di registrare e accodare ciascuno degli script contemporaneamente. Dovremmo solo accodarci. La registrazione non è obbligatoria in quanto la wp_enqueue_script()funzione registra automaticamente lo script.
  3. Ma dobbiamo registrarci mentre ci troviamo in una delle seguenti situazioni:

    un. Supponiamo di aver bisogno di uno script da caricare in più di un posto come una volta nel front-end e una volta nel back-end (pagina di amministrazione). Ora possiamo registrare lo script solo una volta. E poi accodarlo singolarmente in front-end e back-end. Guarda, accodare significa caricare. Registrarsi non significa caricare. Nel caso in cui non lo registrassimo, verrà automaticamente registrato tutte le volte che lo accodiamo. D'altra parte, se lo registriamo una volta, verrà registrato una volta, indipendentemente da quante volte lo accodiamo.

    b. Se vogliamo usare uno script come dipendenza di altri script, allora non abbiamo bisogno di accodarlo wp_enqueue_script(). Basta registrarlo con wp_register_script(). E verrà automaticamente accodato quando usiamo il nome dell'handle come una dipendenza di altri script accodati wp_enqueue_script().

    c. Se vogliamo che lo script venga caricato quando necessario anziché essere caricato in una sola volta, possiamo semplicemente registrarlo per un uso successivo. Il caso d'uso è stato mostrato sopra.

NB Per quanto ne sono convinto, si può trarre la stessa conclusione per i fogli di stile CSS. Voglio dire che possiamo usare wp_register_style()e wp_enqueue_style()allo stesso modo.

Nota che le conclusioni tratte qui riflettono la mia deduzione. Se sbaglio, per favore correggimi. E potresti aver raggiunto una conclusione diversa e molto migliore. Se è così, ti preghiamo di farcelo sapere. Chissà? Forse il tuo è il migliore. Come dice il proverbio, "Come molti principi, quanti modi di salvezza". :)

https://ansrthemeaction.blogspot.com/2019/11/wpregisterscript-when-to-use.html


La tua spiegazione è la migliore che abbia letto. Ora capisco perché è importante registrare gli script. Grazie!
Jee,

Grazie mille @Jee
Mohammad Shohel Rana il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.