在unctions.php中加载jQuery时出现问题

时间:2011-09-14 作者:remi90

我正在尝试向我的Wordpress站点添加一些Jquery脚本,不幸的是,我无法将您链接到该站点,因为我正在本地工作。看起来Jquery文件和我创建的fancyboxStyle都在加载中,但其他所有js脚本都没有加载。

functions.php

function my_init() {
    if (!is_admin()) {
        wp_deregister_script(\'jquery\');
        wp_register_script( \'jquery\', \'https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js\');
        wp_enqueue_script(\'jquery\');

    // load JS files from my theme

    wp_enqueue_script(\'easing\', get_bloginfo(\'template_url\') . \'/js/jquery.easing-1.3.pack.js\', array(\'jquery\'), \'1.0\', true, $in_footer);  

    wp_enqueue_script(\'mouseWheel\', get_bloginfo(\'template_url\') . \'/js/jquery.mousewheel-3.0.4.pack.js\', array(\'jquery\'), \'1.0\', true, $in_footer);

    wp_register_style( \'fancyboxStyle\', get_bloginfo(\'template_url\') . \'/css/fancybox.css\', true);

    wp_enqueue_style( \'fancyboxStyle\' );

    wp_enqueue_script(\'fancybox\', get_bloginfo(\'template_url\') . \'/js/jquery.fancybox-1.3.4.pack.js\', array(\'jquery\'), \'1.0\', true, $in_footer);

    wp_enqueue_script(\'fancyboxControls\', get_bloginfo(\'template_url\') . \'/js/fancybox/fancyboxControls.js\', array(\'jquery\'), \'1.0\', true, $in_footer);


    }
}
add_action(\'init\', \'my_init\');
文件都位于正确的位置,但脚本不会加载到页脚(或页眉)中。

任何帮助都将不胜感激。

谢谢

艾希礼

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

这里有多个错误。

您将CSS和JS放在同一个钩子上,而JS可能使用的钩子是错误的wp_enqueue_scriptswp_print_styles

  • wp_register_script / wp_enqueue_script 仅接受4个参数register 您的脚本和enqueue only the last one 及其依赖项。使用第三个参数定义这些
  • 请尝试以下代码:

    functions.php

    add_action(\'wp_print_styles\', \'wpse28490_enqueueStyles\');
    function wpse28490_enqueueStyles() {
        wp_register_style(\'fancyboxStyle\', get_template_directory_uri() . \'/css/fancybox.css\');
        wp_enqueue_style(\'fancyboxStyle\');
    }
    
    add_action(\'wp_enqueue_scripts\', \'wpse28490_enqueueScripts\');
    function wpse28490_enqueueScripts() {
        if(!is_admin()) {
            // If our site is using SSL, we should load our external scripts also in HTTPS
            $protocol = (is_ssl()) ? \'https://\' : \'http://\';
    
            // jQuery
            wp_deregister_script(\'jquery\');
            wp_register_script(\'jquery\', $protocol . \'ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js\', array(), \'1.6.2\', true);
    
            // Custom scripts
            wp_register_script(\'jquery-easing\', get_template_directory_uri() . \'/js/jquery.easing-1.3.pack.js\', array(\'jquery\'), \'1.0\', true);  
            wp_register_script(\'jquery-mouseWheel\', get_template_directory_uri() . \'/js/jquery.mousewheel-3.0.4.pack.js\', array(\'jquery\'), \'1.0\', true);
            wp_register_script(\'jquery-fancybox\', get_template_directory_uri() . \'/js/jquery.fancybox-1.3.4.pack.js\', array(\'jquery\'), \'1.0\', true);
            // fancyboxControls needs jquery, jquery-mouseWheel and jquery-fancybox, so we could pass these ids to the third parameter as an array.
            wp_register_script(\'fancyboxControls\', get_template_directory_uri() . \'/js/fancybox/fancyboxControls.js\', array(\'jquery\', \'jquery-easing\', \'jquery-mouseWheel\', \'jquery-fancybox\'), \'1.0\', true);
    
            // Everything is registred, just enqueue our last script
            wp_enqueue_script(\'fancyboxControls\');
        }
    }
    

    结束

    相关推荐

    为什么jQuery-UI-core在我的页脚而不是页眉中入队?

    这就是我用来确保jquery ui核心可用的方法:if (!is_admin()) add_action(\'wp_enqueue_scripts\', \'zg_load_scripts\'); function zg_load_scripts(){ wp_enqueue_script(\"jquery-ui-core\"); } 我也试过了wp_enqueue_script(\"jquery-ui-core\", null, null, false, fal