¿Cuándo debo usar wp_register_script () con wp_enqueue_script () frente a wp_enqueue_script ()?

47

Tengo problemas para entender cuándo necesitas usar wp_register_script() . Actualmente, solo uso algo como:

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 );
}

He leído mucho (Codex, blogs, etc.), pero no puedo entender cuándo debo registrarme primero, o cuándo debo poner en cola. Como ejemplo, me di cuenta de que TwentyTwelve no registra ningún estilo ni scripts, solo los pone en cola.

    
pregunta akTed 21.01.2013 - 15:36

2 respuestas

43

El wp_register_script() Codex page dice literalmente:

  

Una forma segura de registrar javascripts en WordPress para su uso posterior con wp_enqueue_script() .

Esto significa que, si desea registrar sus scripts, pero no cargarlos directamente en sus páginas, puede registrar los archivos una vez y luego cargarlos cuando los necesite.

Por ejemplo:

Tiene una declaración de cambio que carga algunas funciones, pero dos de los tres casos necesitan un archivo javascript en particular, y uno no. Puede poner en cola el script cada vez, lo que cuesta más recursos, o simplemente poner en cola el script cuando lo necesite:

...
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;
}

No es necesario registrar una secuencia de comandos y luego ponerlas en cola, pero puede proporcionar cierta lógica en su código si registra todas las secuencias de comandos que necesita en algún lugar de su functions.php en lugar de en todas partes de su código.

El Códice también dice lo siguiente:

  

Use la acción wp_enqueue_scripts para llamar a esta función, o admin_enqueue_scripts para llamarla en el lado del administrador.

Esto significa que si desea poner en cola su secuencia de comandos en frond-end y en el back-end, puede registrar una secuencia de comandos una vez, y luego cargarla en la parte delantera con wp_enqueue_script y en el back-end con admin_enqueue_script .
De esta manera, no tendrá el mismo recurso de salida en cola dos veces en un tema, complemento, widget o lo que sea.

    
respondido por el Mike Madern 21.01.2013 - 15:47
6

En mi humilde opinión, la principal ventaja de usar wp_register_script antes de wp_enqueue_scripts se ilustra en el siguiente párrafo de Codex :

  

Los scripts que han sido registrados previamente usando wp_register_script () lo hacen   no es necesario ponerlos en cola manualmente usando wp_enqueue_script () si están   listado como una dependencia de otro script que está en cola. WordPress   incluirá automáticamente el script registrado antes de que incluya   el script en cola que enumera el identificador del script registrado como un   dependencia.

Si cree que no necesita esto (por ejemplo, porque está 100% seguro de que su secuencia de comandos no participará en ninguna dependencia) probablemente pueda ir directamente con wp_enqueue_scripts , sin un wp_register_script preliminar.

    
respondido por el Franco 01.06.2017 - 21:43

Lea otras preguntas en las etiquetas