注册脚本和将脚本入队的正确位置

时间:2011-06-11 作者:Bosworth99

我在我的主题函数中排队等待几个脚本。php:

if ( ! function_exists(\'b99_init_scripts\') ) :
    function b99_init_scripts(){

        if ( !is_admin()){
            wp_deregister_script(\'jquery\');
            wp_register_script(\'jquery\', \'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js\', false, null, false);
            wp_enqueue_script(\'jquery\');

        wp_register_script(\'B99\', get_template_directory_uri().\'/javascript/site/B99.js\', array(\'jquery\'), null, false);
            wp_enqueue_script(\'B99\');

        wp_register_script(\'B99-Nav\', get_template_directory_uri().\'/javascript/site/module/B99.Navigation.js\', array(\'B99\'), null, false );
        wp_enqueue_script(\'B99-Nav\');

            if ( is_page(\'portfolio\') || is_front_page() ){
                wp_register_script(\'B99-Portfolio\', get_template_directory_uri().\'/javascript/site/module/B99.Portfolio.js\', array(\'B99-Nav\'), null, false);
                wp_enqueue_script(\'B99-Portfolio\');
            } // fails if add_action is set to \'init\'

            if ( is_singular() && get_option( \'thread_comments\' ) ){
                wp_enqueue_script( \'comment-reply\' );
            }
        }
    }
    endif;
    add_action( \'wp_enqueue_scripts\', \'b99_init_scripts\' );
我已经读到,添加\\u action的正确位置是“init”

add_action( \'init\', \'b99_init_scripts\' );
然而,我的is_page(\'xxx\') 初始化期间检查所有失败。

按照我在上面粘贴的代码进行编码:

add_action( \'wp_enqueue_script\', \'b99_init_scripts\' );
工作正常,页面检查正常,但我不认为我应该在wp\\u enqueue\\u scripts例程期间取消注册、注册和排队。

是否有更好的连接位置,或者我可以在init期间更改页面检查以正确运行(我假设页面检查不起作用,因为所需的查询尚未启动)。

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

我建议创建一个名为b99_register_scripts() 把这个挂在init. 然后可以创建另一个名为b99_enqueue_scripts() 把它挂在wp_print_scripts.

SO网友:Milo

wp_enqueue_scripts 如果对你有用就可以了。或wp_print_scripts 也是一种选择。

的要点wp_register_script 如果您有多个潜在的依赖项,那么您可以在代码中的任何位置注册某些内容,然后在适当的位置排队一次。如果您在一个地方完成所有操作,您可以跳过注册,直接将其排队,结果将是相同的。

结束

相关推荐

是否有用于入队脚本的筛选器来剥离type=“Text/javascript”属性

script type=\"text/javascript\" 在HTML5中是可选的,所有浏览器(即使是旧的浏览器)都可以识别没有它的JavaScript。我正在构建一个HTML5网站,希望我的脚本输出保持一致。但是,使用WordPress排队功能的脚本打印为type=\"text/javascript\". CSS还打印有type=\"text/css\", 这也是不需要的。我找不到删除这些属性的筛选器。有吗?