无法将脚本放入页脚中?

时间:2012-01-05 作者:janoChen

WordPress抄本says:

(old codex page)

$in\\u页脚

(布尔)(可选)脚本通常放置在节中。如果此参数为true,则脚本将放置在的底部。这要求主题在适当的位置具有wp\\u footer()挂钩。请注意,在运行wp\\u head之前,您必须将脚本排队,即使它将被放置在页脚中。(WordPress 2.8中新增)默认值:false

所以我补充道true 在每个脚本的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\');
但脚本仍包含在标题中。

有什么建议可以解决这个问题吗?

6 个回复
最合适的回答,由SO网友:krembo99 整理而成

你把代码放在哪里了?

“true”参数位于wp_register_script();, 不是wp_enqueue_script() ;功能是:

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

意思

    <?php wp_enqueue_script(\'NameMySccript\', \'path/to/MyScript\', 
\'dependencies_MyScript\', \'VersionMyScript\', \'InfooterTrueorFalse\'); ?>
例如:。

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

<你的主题有<?php wp_footer(); ?> 在这一页的末尾3。使用添加操作add_action(\'wp_print_scripts\', \'your function\');

也就是说,您的最佳做法是:

<?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\');  
?>  
add_action(\'wp_print_scripts\', \'dl_register_js\');

SO网友:Brian Fegter

您正在将布尔值传递给依赖项参数。试试这个:

 wp_enqueue_script(
      \'replace\', 
       get_template_directory_uri().\'/js/jquery.ba-replacetext.min.js\',
       array(\'jquery\'), 
       \'\', 
       true
);

SO网友:ImFarhad

我也有同样的问题,在进行一些搜索后,我的自定义主题中缺少了此功能:

 <?php wp_footer();?>

SO网友:Andrew-ThinkUp

我想把答案简化一下。。使用wp\\u enqueue\\u script或wp\\u register\\u script在页脚中加载脚本时,需要确保也包括其他参数,即使它们为空。

我在努力。。

wp_register_script( \'rrssb\', get_stylesheet_directory_uri() . \'/includes/rrssb.min.js\',  true);
这并不像janoChen所注意到的那样有效。Wordpress要求

wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
所以你需要包括\'\', 如果要内联声明函数,则不使用的参数。因此,以下代码按计划工作。

wp_register_script( \'rrssb\', get_stylesheet_directory_uri() . \'/includes/rrssb.min.js\', \'\', \'\', true);
随后,您可以使用类似于数组的格式声明函数,如@brianfegter所示。

SO网友:user3765755

如果将脚本排入页眉,但对排入页脚的脚本声明了依赖关系,WordPress会将页脚脚本移动到页眉,以使其可供依赖脚本使用。

SO网友:SergeDirect

根据官方WordPress文件(上次检查日期:2018年5月):

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

以及7年以上的个人经验。

您应该尝试始终使用\'wp_enqueue_scripts\' 功能可更好地与已安装的插件/主题兼容。

 add_action(\'wp_enqueue_scripts\',\'your_plugin_enqueue\');
您可以找到有关使用官方文档的更多信息Usage here

   /**** 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. If you find this answer useful, please give it an \'▲\' (ArrowUP), if you think that it can be improved, please comment below.

结束

相关推荐