Cómo agregar un fragmento de código javascript al pie de página que requiere jQuery

23

Sé que puedo agregar un archivo de script al pie de página de wordpress que requiere jquery usando este código:

<?php
function my_scripts_method() {
   // register your script location, dependencies and version
   wp_register_script('custom_script',
       get_template_directory_uri() . '/js/custom_script.js',
       array('jquery'),
       '1.0',
       true);
   // enqueue the script
   wp_enqueue_script('custom_script');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');
?>

Pero qué pasa si quiero agregar solo un fragmento normal de jquery en línea, no un archivo. Cómo se puede hacer esto.

Editar

Sé que puedo usar este script para agregar algo al pie de página:

<?php
function myscript() {
?>
<script type="text/javascript">
 // This depends on jquery
</script>
<?php
}
add_action('wp_footer', 'myscript');

Pero, ¿cómo especifico el script que se usa requiere jquery para ejecutarse?

    
pregunta Saif Bechan 06.11.2011 - 11:30

5 respuestas

26

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.

    
respondido por el EAMann 06.11.2011 - 18:22
11

Desde wordpress 4.5 puedes agregar script en línea por wp_add_inline_script() . Para agregar un fragmento de código javascript al pie de página que requiere jQuery, este código te ayuda

function enqueue_jquery_in_footer( &$scripts ) {

    if ( ! is_admin() )
        $scripts->add_data( 'jquery', 'group', 1 );
}
add_action( 'wp_default_scripts', 'enqueue_jquery_in_footer' );

function theme_prefix_enqueue_script() {
   if(!wp_script_is('jquery', 'done')) {
     wp_enqueue_script('jquery');
   }
   wp_add_inline_script( 'jquery-migrate', 'jQuery(document).ready(function(){});' );
}
add_action( 'wp_enqueue_scripts', 'theme_prefix_enqueue_script' );

wp_add_inline_script con wordpress jquery

    
respondido por el Dhinju Divakaran 25.06.2016 - 08:44
1

Utiliza la acción wp_footer de esta manera:

add_action( 'wp_footer', 'wpse33008');
function wpse33008() {
?>
<script type="text/javascript">
    /** INSERT SCRIPT HERE **/
</script>
<?php
}
    
respondido por el v0idless 06.11.2011 - 15:17
0

Sé que OP quiere especificar un requisito en jQuery, y los autores de WordPress deberían haber permitido que los fragmentos se coloquen en la cola junto a los archivos de script, pero no lo hicieron, por lo que recomiendo no intentar forzar eso. Si no quiere meterse con la cola o su orden, como yo (porque estoy usando otros complementos que combinan y optimizan scripts), entonces la respuesta es usar la acción wp_footer así:

<?php

add_action(
    'wp_footer'
    , function() {
        ?>
        <script>
            if (window.jQuery) {
                // your snippet
            }
        </script>
        <?php
    }
    , 21 # after enqueued footer scripts
);
    
respondido por el Walf 25.07.2018 - 11:56
-2

Puedes usar la acción wp_footer para hacer esto. Compruebe el códice para wp_footer .

    
respondido por el Rutwick Gangurde 06.11.2011 - 14:30

Lea otras preguntas en las etiquetas