¿No puede poner secuencias de comandos en el pie de página?

8

El códice de WordPress dice:

  

$ in_footer

     

(booleano) (opcional) Normalmente, los scripts se colocan en el   sección. Si este parámetro es verdadero, el script se coloca en la parte inferior   del . Esto requiere que el tema tenga el gancho wp_footer () en   el lugar apropiado. Tenga en cuenta que tiene que poner en cola su script   antes de ejecutar wp_head, incluso si se colocará en el pie de página. (Nuevo   en WordPress 2.8) Predeterminado: falso

Así que agregué true después de cada secuencia de comandos src path :

/**
     * JavaScript
     */

    function my_scripts_method() {
        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js', true );
        wp_enqueue_script( 'jquery' );
    }

    add_action('wp_enqueue_scripts', 'my_scripts_method');

    function media_queries_script() {
        wp_register_script( 'mediaqueries', get_template_directory_uri() . '/js/css3-mediaqueries.js', true );
        wp_enqueue_script( 'mediaqueries' );
    }

    add_action('wp_enqueue_scripts', 'media_queries_script');

    function custom_script() {
        wp_register_script( 'custom', get_template_directory_uri() . '/js/custom.js', true );
        wp_enqueue_script( 'custom' );
    }

    add_action('wp_enqueue_scripts', 'custom_script');

    function replace_script() {
        wp_register_script( 'replace', get_template_directory_uri() . '/js/jquery.ba-replacetext.min.js', true );
        wp_enqueue_script( 'replace' );
    }

    add_action('wp_enqueue_scripts', 'replace_script');

Pero los scripts aún se incluyen en el encabezado.

¿Alguna sugerencia para arreglar eso?

    
pregunta janoChen 05.01.2012 - 05:58

6 respuestas

13

¿Dónde pusiste tu código?

  1. los argumentos "verdaderos" van en wp_register_script(); , no en wp_enqueue_script() ;

las funciones son:

<?php wp_enqueue_script('handle', 'src', 'deps', 'ver', 'in_footer'); ?>

significado

    <?php wp_enqueue_script('NameMySccript', 'path/to/MyScript', 
'dependencies_MyScript', 'VersionMyScript', 'InfooterTrueorFalse'); ?>

E.G.

<?php wp_enqueue_script('my_script', WP_CONTENT_URL . 'plugins/my_plugin/my_script.js', array('jquery', 'another_script'), '1.0.0', true); ?>

  1. ¿tu tema tiene <?php wp_footer(); ?> al final de la página?

3.add la acción con add_action('wp_print_scripts', 'your function');

Dicho esto, su mejor práctica sería:

<?php  
if (function_exists('load_my_scripts')) {  
    function load_my_scripts() {  
        if (!is_admin()) {  
        wp_deregister_script( 'jquery' );  
        wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js');  
        wp_enqueue_script('jquery');  
        wp_register_script('myscript', bloginfo('template_url').'/js/myScript.js'__FILE__), array('jquery'), '1.0', true );  
        wp_enqueue_script('myscript');  
        }  
    }  
}  
add_action('init', 'load_my_scripts');  
?>  

o add_action('wp_print_scripts', 'dl_register_js');

    
respondido por el krembo99 05.01.2012 - 07:21
5

Está pasando un valor bool al parámetro de dependencia. Prueba esto:

 wp_enqueue_script(
      'replace', 
       get_template_directory_uri().'/js/jquery.ba-replacetext.min.js',
       array('jquery'), 
       '', 
       true
);
    
respondido por el Brian Fegter 05.01.2012 - 07:21
2

Me gustaría simplificar la respuesta aquí. Cuando use wp_enqueue_script o wp_register_script para cargar un script en el pie de página, debe asegurarse de incluir también los otros parámetros, incluso si están en blanco.

Estaba intentando ...

wp_register_script( 'rrssb', get_stylesheet_directory_uri() . '/includes/rrssb.min.js',  true);

Lo que no funcionó como @janoChen ha notado. Wordpress llama para

wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );

Por lo tanto, debe incluir '', para los parámetros que no está utilizando si desea declarar la función en línea. Por lo tanto, el código siguiente funciona según lo previsto.

wp_register_script( 'rrssb', get_stylesheet_directory_uri() . '/includes/rrssb.min.js', '', '', true);

Posteriormente, puede declarar la función en un formato de matriz como el que muestra @Brian Fegter.

    
respondido por el Andrew-ThinkUp 10.09.2014 - 17:33
1

Si encola un script al encabezado pero declara una dependencia a un script en cola al pie de página, WordPress moverá el script del pie de página al encabezado para que esté disponible para los scripts dependientes.

    
respondido por el user3765755 25.03.2015 - 03:24
1

Tuve el mismo problema y después de realizar una búsqueda, me faltaba esta función en mi tema personalizado:

 <?php wp_footer();?>
    
respondido por el ImFarhad 15.10.2018 - 14:21
0

De acuerdo con la documentación oficial de WordPress (Última revisión - Mayo de 2018):

enlace

y experiencia personal de más de 7 años.

  1. Debes intentar usar siempre la función ' wp_enqueue_scripts ' para una mejor compatibilidad con los complementos / temas instalados.

     add_action('wp_enqueue_scripts','your_plugin_enqueue');
    
  2. Puede encontrar más información sobre el uso de documentos oficiales Uso aquí

       /**** wp_register_script, wp_enqueue_script, wp_dequeue_script ***
    
             *** Personal recommendation
             *  - I strongly recommend registering all scripts before enqueueing,
             *  again -> for better compatibility with other developers. 
             *  :::: For example, so others could manipulate the position 
             *       of your scripts using the wp_dequeue_*type* method. 
             *       (wp_dequeue_script, wp_dequeue_style,...)
    
             *** Official Docs
             *   $in_footer
             *      - (bool) (Optional) Whether to enqueue the script before </body> instead of in the <head>. Default 'false'.
             *      - Default value: false
             *
             ***/
    
             // examples:
    
      function your_plugin_enqueue(){
    
    
    
             wp_dequeue_script('some_script(s)'); // remove conflicting script
    
             wp_register_script( $handle, $src, $deps, $ver, $in_footer=true ); 
             wp_enqueue_script($handle);
             wp_register_script('some_script(s)', $src, $deps, $ver, $in_footer=true);  // re-enqueue scripts after yours for example to elimination of conflicts
    
             wp_enqueue_script('some_script(s)');
    
      }
    
    
      add_action('wp_enqueue_scripts','your_plugin_enqueue');
    

P.S. Si encuentra que esta respuesta es útil, proporciónele una '▲' ( ArrowUP ), si cree que se puede mejorar, comente a continuación.

    
respondido por el SergeDirect 16.05.2018 - 10:36

Lea otras preguntas en las etiquetas