我不确定何时/在哪里使用 wp_enqueue_script()
或 wp_register_script()
简单来说;
wp_enqueue_script
的意思是将文件添加到队列中进行注册
wp_register_script
的意思是立即注册文件
wp_register_script
注册一个脚本,以便稍后使用wp_enqueue_script()
函数进行排队。
wp_enqueue_script()
如果提供了 $src(不覆盖),则会注册该脚本并将其加入队列。 来源: Developer.wordpress
wp_register_script( $handle, $src, $deps, $ver, $in_footer );
使用 wp_register_script() 预注册的脚本,如果它们被列为另一个已经被 enqueued 的脚本的依赖项,则不需要使用 wp_enqueue_script() 手动 enqueue。WordPress 会在包含列出已注册脚本作为依赖项的 enqueued 脚本之前自动包含已注册的脚本。wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
wp_enqueue_script() 函数会根据脚本的依赖关系,在正确的时间将脚本文件链接到生成的页面上,如果脚本尚未被包含并且所有依赖项都已注册。您可以使用 wp_register_script() 函数注册一个先前注册过的句柄来链接脚本,或者提供该函数所需的所有参数来链接脚本。
我来到这里是因为我有同样的问题。
阅读了相关内容后,我认为仍然有必要更新答案,因此这是我的尝试:
wp_register_script
- 这告诉 Wordpress 有一个脚本 但不足以加载该脚本
wp_enqueue_script
确保所有依赖脚本(以及它们的依赖项递归)都将被加载,并且主要脚本将在它们之后加载。
wp_register_style
和 wp_enqueue_style
使用相同的逻辑。
因此,要加载脚本,它必须成为调用 wp_enqueue_script
的“主”脚本,或者作为在调用 wp_enqueue_script
中列出的依赖项(并且先前注册或排队为主脚本)。
脚本和样式的排队(没有相应的 *_*_styles
动作钩子)应在内部进行。
add_action('wp_enqueue_scripts' , myFunc); // - for scripts that need to run on the front end
add_action('admin_enqueue_scripts', myFunc); // - for scripts that need to run on the admin panel
add_action('login_enqueue_scripts', myFunc); //- for scripts that need to run on the login page
function my_enqueue_admin_scripts( $hook ) {
if ( 'pagename.php' == $hook ) {
wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'myscript.js', array(), '1.0' );
}
}
add_action( 'admin_enqueue_scripts', 'my_enqueue_admin_scripts' );
$wp_scripts
和$wp_styles
拥有一个registered
属性,列出了已注册的脚本和样式表。print_r(get_current_screen())
也可以提供帮助。wp_register_scripts
和wp_register_scripts
是一种函数,用于立即注册您的脚本(js)和样式(css),但不直接在您的WordPress页面中加载它们。switch()
语句与这些函数配合使用,使它们仅在需要它们的页面上加载您的“脚本”。wp_register_style
和wp_register_script
。此外,在这两种情况下,您都要在admin_enqueue_scripts
调用您的函数,因此一个好的经验法则是当您钩入admin_enqueue_scripts
时,请务必注册您的脚本。