Ponga en cola los scripts del complemento de WordPress debajo de todos los demás JS

3 minutos de lectura

Estoy desarrollando una aplicación de WordPress simple, pero tengo un problema ya que todos los scripts de los complementos se procesan antes que los que están en cola en mi functions.php.

Aquí hay una sección de muestra del functions.php:

function my_scripts() {
    wp_register_script('app-js', get_template_directory_uri() . '/javascripts/app.js', array('jquery'), null, true );
    wp_enqueue_script('app-js');
}
add_action( 'wp_enqueue_scripts', 'my_scripts');

Lo importante a tener en cuenta es que (siguiendo las mejores prácticas, mi JS está configurado para mostrarse en la parte inferior de la página.

También tengo un par de complementos ejecutándose en el tema. El problema es que la salida se ve así:

<!-- Note the plugin appears first -->
<script type="text/javascript" src="http://localhost/wordpress/wp-content/plugins/my-plugin/acl-plugin.js"></script>
<!-- And the main JS appears second -->
<script type="text/javascript" src="http://localhost/wordpress/wp-content/themes/my-theme/javascripts/app.js"></script>
</body>
</html>

¿Cómo puedo obligar a WordPress a mostrar el JS principal (que creo que está representado por wp_head() para aparecer en la parte inferior de la página?

  • ¿Dónde leyó acerca de esta “mejor práctica”? Tengo curiosidad porque actualmente estoy trabajando en cambiarlo.

    – vhs

    5 mayo 2017 a las 10:24

avatar de usuario
jonathan marzullo

El WordPress wp_head() El método solo generará scripts o estilos que tengan ese último parámetro en el WordPress wp_enqueue_script() ajustado a falso.. cuando está configurado para verdadero se renderizará en el pie de página a través de la wp_footer()

puede cambiar la prioridad de cuando se llama e inserta ajustando el $prioridad parámetro en el añadir_acción()

http://codex.wordpress.org/Function_Reference/add_action

$priority (int) (opcional) Se usa para especificar el orden en que se ejecutan las funciones asociadas con una acción en particular. Los números más bajos corresponden a una ejecución anterior y las funciones con la misma prioridad se ejecutan en el orden en que se agregaron a la acción. Predeterminado: 10

add_action( $hook, $function_to_add, $priority, $accepted_args );

Y también mire los siguientes dos métodos de WordPress:

wp_enqueue_script() :

https://developer.wordpress.org/reference/functions/wp_enqueue_script/

wp_enqueue_script( string $handle, string $src="", array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )

wp_register_script() :

https://developer.wordpress.org/reference/functions/wp_register_script/

wp_register_script( string $handle, string $src, array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )

Prueba esto..

Puede que tengas que jugar con eso. $prioridad parámetro

function my_scripts() {
        wp_register_script('app-js', get_template_directory_uri() . '/javascripts/app.js', array('jquery'), null, true );
        wp_enqueue_script('app-js');
}
add_action( 'wp_enqueue_scripts', 'my_scripts', 20, 1);

  • ¡Ese es el pollo! ¡Gracias amigo!

    – Sheixt

    11 de noviembre de 2013 a las 20:04

  • Botón editar deshabilitado. Para completar, sería bueno indicar el wp_enqueue_script() predeterminado en su respuesta.

    – vhs

    5 de mayo de 2017 a las 10:26


  • Si observa la primera oración en mi respuesta y mi fragmento de código. Verás que puse el último parámetro en truelo que significa que el valor predeterminado es false. Pero como desee, agregué los métodos WP anteriores junto a los enlaces a la API de WordPress Codex para wp_enqueue_script() y wp_register_script() 🙂

    – Jonathan Marzullo

    5 mayo 2017 a las 12:37


¿Ha sido útil esta solución?