La forma más sencilla de hacerlo es en realidad una combinación de wp_enqueue_script
y las acciones de pie de página a las que Saif y v0idless ya hicieron referencia. Con frecuencia uso jQuery en mis temas y complementos, pero también pongo todos los demás scripts en el pie de página.
La mejor manera de hacer que las cosas se pongan en cola sería esta:
function myscript() {
?>
<script type="text/javascript">
if ( undefined !== window.jQuery ) {
// script dependent on jQuery
}
</script>
<?php
}
add_action( 'wp_footer', 'myscript' );
function myscript_jquery() {
wp_enqueue_script( 'jquery' );
}
add_action( 'wp_head' , 'myscript_jquery' );
Pero este código cortado asume que usted es el que hace la cola del script, es decir, lo está haciendo en su propio complemento o tema.
En este momento, no hay manera de agregar una secuencia de comandos en línea al pie de página de WordPress y también cargarla con dependencias. Pero hay una alternativa, si estás dispuesto.
La alternativa
Cuando WordPress trabaja con scripts, los carga internamente en un objeto para realizar un seguimiento de ellos. Hay esencialmente 3 listas dentro del objeto:
- registrado
- cola
- hecho
- to_do
La primera vez que registre un script con wp_register_scripts()
se coloca en la lista de registrados. Cuando wp_enqueue_script()
el script, se copia a la lista de colas. Una vez impreso en la página, se agrega a la lista de tareas.
Entonces, en lugar de poner en cola su secuencia de comandos de pie de página para requerir jQuery, puede documentar que necesita usar jQuery y simplemente verificar mediante programación para asegurarse de que jQuery esté cargado.
Esto utiliza wp_script_is()
para verificar dónde se encuentra el script.
function myscript() {
if( wp_script_is( 'jquery', 'done' ) ) {
?>
<script type="text/javascript">
// script dependent on jQuery
</script>
<?php
}
}
add_action( 'wp_footer', 'myscript' );
Usted podría ser capaz de usar este mismo código para forzar a jQuery a cargar también el pie de página, pero no lo he probado ... así que su kilometraje puede variar.