wp_enqueue_scripts,wp_register_scripts,wp_print_scripts:我很困惑


8
  • 我一直在阅读有关该主题的文章,但是阅读的次数越多,我越会感到困惑。

  • 有人可以在短向我解释什么是之间的确切区别wp_enqueue_scriptswp_register_scriptswp_print_scripts

  • 例如,我在functions.php中包含以下代码-并且可以正常工作,但是我不明白为什么不能将其wp_print_scripts用于样式表,而如果将这些代码wp_enqueue_scripts用于javascript文件,该代码仍然可以工作:

    add_action('wp_print_scripts', 'add_my_js');
    function add_my_js(){
        if(!is_admin()){
            wp_enqueue_script('default',  get_bloginfo('stylesheet_directory').'/js/default.js', array('jquery'));
        }
    }
    
    add_action('wp_enqueue_scripts', 'add_my_stylesheet');
    function add_my_stylesheet() {
        wp_register_style('default', get_bloginfo( 'stylesheet_url'));
        wp_enqueue_style( 'default');
    }
    

Answers:


9

wp_print_scripts是将脚本输出到模板时运行的操作。wp_register_scriptwp_enqueue_script是用于注册/排队wp_print_scripts运行脚本的功能。

您不能在wp_print_scripts动作挂钩中注册或排队样式,因为样式已经在wp_print_styles挂钩中输出,该样式在之前运行wp_print_scripts

请参阅操作参考以查看事物在请求中执行的顺序:

22. wp_head
23. wp_enqueue_scripts
24. wp_print_styles
25. wp_print_scripts

那么,wp_enqueue_script和wp_register_script有什么区别?
Jeff K.

3
wp_register_script使用WordPress注册脚本,但不将其添加到队列中。如果您还不调用wp_enqueue_script,则该脚本将不会出现。这样做的目的是让您一次注册脚本,然后有条件地将其排入代码中的其他位置。这对于插件开发人员很有用,因为脚本可能会在代码中的多个位置排队。您也可以直接将脚本入队而无需注册。
米洛
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.