Forzar el orden de carga de scripts en WordPress

13 jun 2012, 11:38:48
Vistas: 28.7K
Votos: 9

Tengo varios scripts que están siendo encolados,

el problema es que quiero forzar el orden de prioridad en el que se cargan estos scripts. Hay uno en particular que se carga desde un plugin antes que los del tema y requiere jQuery, sin embargo, el plugin no tiene la dependencia de jQuery declarada (mala práctica del desarrollador del plugin, pero prefiero no tocar código de terceros por razones de compatibilidad futura)

¿hay alguna manera de manipular el orden de encolamiento en tiempo de ejecución?

Muchas gracias

0
Todas las respuestas a la pregunta 2
3
16

Solo necesitas encolar tus scripts antes de que el plugin lo haga. Puedes hacerlo estableciendo una prioridad de 0 para tu hook. Por ejemplo, haz lo siguiente:

add_filter( 'wp_enqueue_scripts', 'wpse8170_enqueue_my_scripts', 0 );
// o si encolas tus scripts en la acción init
// add_action( 'init', 'wpse8170_enqueue_my_scripts', 0 );

function wpse8170_enqueue_my_scripts() {
    wp_enqueue_script( 'myscript', 'http://path/to/my/script.js', array( 'jquery' ) );
    // mis otros scripts van aquí...
}

Configurar la prioridad para tus hooks lo colocará al principio de la cola de llamadas y tus scripts se agregarán primero.

13 jun 2012 11:48:22
Comentarios

perdón por ser ingenuo pero supongo que wpse8170_enqueue_my_scripts_on_init es una función personalizada con una llamada estándar enqueue_scripts dentro, ¿no?

Alex Alex
13 jun 2012 11:51:21

@Alex he actualizado mi respuesta, échale un vistazo.

Eugene Manuilov Eugene Manuilov
13 jun 2012 12:01:29
0

Para agregar un script antes que otros scripts, usa wp_register_script() en lugar de wp_enqueue_script(), y luego agrega manualmente tu script para que sea el primero en la cola:

wp_register_script('handle', get_template_directory_uri()."/custom.js");
array_unshift(wp_scripts()->queue, 'handle');
4 dic 2019 19:32:38