¿Cuándo debo usar wp_register_script () con wp_enqueue_script () versus solo wp_enqueue_script ()?


55

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 debería registrarme primero, o cuándo debería poner en cola. Como ejemplo, noté que TwentyTwelve no registra ningún estilo o script, solo los pone en cola.

Respuestas:


50

La wp_register_script()página del Codex 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 funcionalidades, pero dos de los tres casos necesitan un archivo javascript particular, y uno no. Puede poner en cola el script cada vez, lo que cuesta más recursos, o simplemente poner el script en secuencia 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 un script y luego ponerlos en cola, pero puede proporcionar algo de lógica en su código si registra todos los scripts que necesita en algún functions.phplugar de su código en lugar de hacerlo en todas partes.

El Codex también dice lo siguiente:

Use la wp_enqueue_scriptsacción para llamar a esta función o admin_enqueue_scriptspara llamarla desde el lado del administrador.

Esto significa que si desea poner en cola su script en el front-end y en el back-end, puede registrar un script una vez y luego cargarlo en el front-end con wp_enqueue_scripty en el back-end con admin_enqueue_script.
De esta manera, no tendrá el mismo recurso en cola dos veces en un tema, complemento, widget o lo que sea.


Gracias. Eso lo aclaró mucho. Entonces, ¿crees que TwentyTwelve no se molesta en registrarse primero ya que seguramente los cargará?
akTed

Eso seguro podría ser una posibilidad. No sé cómo el tema veinte doce es la acumulación ya que nunca lo uso, pero seguro que tendrán sus razones para enqueueen lugar de register.
Mike Madern

2
En ese sentido, no estoy de acuerdo con "Puede poner en cola el guión cada vez, lo que cuesta más recursos, o simplemente poner el guión cuando lo necesite". En su código de ejemplo, podría eliminar la llamada de registro y, en su lugar, realizar múltiples llamadas equivalentes completas (con $ src arg) wp_enqueue_style(). Esto sería más esfuerzo de tipeo, pero no generaría mayores requisitos de recursos. ¿Correcto?
Jan-Philip Gehrcke

77
Un punto que todas las explicaciones han dejado de lado hasta ahora es que puede usar wp_register_script()para registrar un script para que pueda usarse como una dependencia para otros scripts y solo cargarse con ellos, sin que se los ponga directamente en cola.
JHoffmann

1
Aunque esto lo explica bien, recomendaría leer esta respuesta también.
lowtechsun

8

En mi humilde opinión, la principal ventaja de usar wp_register_scriptantes wp_enqueue_scriptsse ilustra en el siguiente párrafo del Codex :

Las secuencias de comandos que se han prerregistrado utilizando wp_register_script () no necesitan colocarse en cola manualmente mediante wp_enqueue_script () si se enumeran como una dependencia de otra secuencia de comandos que está en cola. WordPress incluirá automáticamente el script registrado antes de incluir el script en cola que enumera el identificador del script registrado como una dependencia.

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


2

He leído algunos artículos y llego a la siguiente conclusión. Creo que ayuda

  1. Registrar cualquier script usando wp_register_script()es solo registrarse; no cargando El script registrado no se cargará hasta que se ponga en cola usando wp_enqueue_script().
  2. No necesitamos registrar y poner en cola cada uno de los scripts simultáneamente. Deberíamos simplemente poner en cola. El registro no es obligatorio ya que la wp_enqueue_script()función registra automáticamente el script.
  3. Pero necesitamos registrarnos mientras estamos en cualquiera de las siguientes situaciones:

    a. Supongamos que necesitamos un script para cargar en más de un lugar, como una vez en el front-end y una vez en el back-end (página de administración). Ahora podemos registrar el script solo una vez. Y luego póngalo en front-end y back-end individualmente. Mira, poner en cola significa cargar. Registrarse no significa cargar. En caso de que no lo registremos, se registrará automáticamente tantas veces como lo coloquemos en la cola. Por otro lado, si lo registramos una vez, se registrará una vez, sin importar cuántas veces lo coloquemos en la cola.

    si. Si queremos usar un script como una dependencia de otros scripts, entonces no necesitamos ponerlo en cola wp_enqueue_script(). Solo regístralo con wp_register_script(). Y se pondrá automáticamente en cola cuando usemos su nombre de identificador como una dependencia de otros scripts en cola wp_enqueue_script().

    C. Si queremos que el script se cargue cuando sea necesario en lugar de cargarse de una vez, simplemente podemos registrarlo para su uso posterior. El caso de uso se ha mostrado arriba.

Nota: Hasta donde estoy convencido, se puede sacar la misma conclusión para las hojas de estilo CSS. Quiero decir que podemos usar wp_register_style()y wp_enqueue_style()de la misma manera.

Tenga en cuenta que la conclusión extraída aquí refleja mi propia deducción. Si me equivoco, corrígeme. Y es posible que haya llegado a una conclusión diferente y mucho mejor. Si es así, háganoslo saber. ¿Quién sabe? Quizás el tuyo sea el mejor. Como dice el refrán, "Tantos principios, tantos caminos hacia la salvación". :)

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


Tu explicación es la mejor que he leído. Ahora entiendo por qué es importante registrar los scripts. ¡Gracias!
Jee

Muchas gracias @Jee
Mohammad Shohel Rana
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.