是否注册位于子主题中的脚本?

时间:2014-05-15 作者:Lisandro Vaccaro

注册位于子主题文件夹中的脚本时遇到很多问题:

这很好:

function register_scripts() {
    wp_register_script( \'newsletter\', get_template_directory_uri() . \'/scripts/scripts.js\', array( \'jquery-migrate\' ), null );
}
add_action( \'init\', \'register_scripts\' );
但是,它指向父主题文件夹,而不是子主题文件夹,当我尝试指向子主题文件夹时,什么都没有发生:

function register_scripts() {
    wp_register_script( \'newsletter\', get_stylesheet_directory_uri() . \'/scripts/scripts.js\', array( \'jquery-migrate\' ), null );
}
add_action( \'init\', \'register_scripts\' );
我做错了什么?

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

我认为你发布的选项实际上都不起作用。您只需注册脚本,需要对其进行加密。此外,您应该使用wp_enqueue_scripts() 动作挂钩代替init().

    function register_scripts() {
        wp_register_script( \'newsletter\', get_stylesheet_directory_uri() . \'/scripts/scripts.js\', array( \'jquery-migrate\' ), null );
        wp_enqeue(\'newsletter\');
    }
   add_action( \'wp_enqueue_scripts\', \'register_scripts\' );

SO网友:s_ha_dum

我不知道第一块代码是如何工作的,第二块代码也不知道,因为在这两种情况下,您所做的只是注册脚本,而不是将其排队。如果您不排队,前端将不会显示任何内容。

function register_scripts() {
  wp_register_script( \'newsletter\', get_stylesheet_directory_uri() . \'/scripts/scripts.js\', array( \'jquery-migrate\' ), null );
  wp_enqueue_script(\'newsletter\'); // you need this
}
add_action( \'wp_enqueue_scripts\', \'register_scripts\' );
另一种可能性是,您的排队代码在其他地方,并且在注册脚本之前正在运行。

还要注意,要将脚本排入队列的正确挂钩是wp_enqueue_scripts, 不init.

wp\\u enqueue\\u脚本是将要出现在前端的项目排队时使用的合适挂钩。尽管名称不同,但它用于将脚本和样式排队。

http://codex.wordpress.org/Plugin_API/Action_Reference/wp_enqueue_scripts

这应该是其他代码所假定的,因此您可能会因此而在计时方面遇到问题。

结束

相关推荐

Defer Parsing of Scripts

这是我第一次尝试这种“延迟解析”的方法,我真的不知道该怎么做。使用PageSpeed工具,我发现我的页面加载速度太慢(目前为92/100)的原因之一是脚本。PageSpeed建议我需要推迟解析所有这些脚本。有没有人可以帮我做这件事。谢谢