注册位于子主题文件夹中的脚本时遇到很多问题:
这很好:
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\' );
我做错了什么?
最合适的回答,由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
这应该是其他代码所假定的,因此您可能会因此而在计时方面遇到问题。