我看不到为什么我的脚本在我注册和入队时没有加载

时间:2013-10-29 作者:user41091

我正在尝试替换标题中的“硬编码”呼叫。通过在函数中注册和排队来创建php。php。JQuery 1.8.3可以根据需要加载,但其他脚本无法加载。下面是我使用的内容:

function puckpros_load_my_scripts() {  
    wp_deregister_script( \'jquery\' );  
    wp_register_script(\'jquery\', \'http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js\');  
    wp_enqueue_script(\'jquery\');  
    wp_register_script(\'menu\', get_stylesheet_directory_uri().\'/js/menu.js\', array(\'jquery\') );  
    wp_enqueue_script(\'menu\');
    wp_register_script(\'kwicks\', get_stylesheet_directory_uri().\'/js/jquery.kwicks.js\', array(\'jquery\') );  
    wp_enqueue_script(\'kwicks\');
    wp_register_script(\'equalheights\', get_stylesheet_directory_uri().\'/js/jquery.equalheights.js\', array(\'jquery\') );  
    wp_enqueue_script(\'equalheights\');
}  

add_action(\'wp_enqueue_scripts\', \'puckpros_load_my_scripts\'); 
这是一个子主题,所以我使用get\\u stylesheet\\u directory\\u uri(),并且文件的路径是正确的。

我相信这很简单,但我看不出我做错了什么。

谢谢

EDIT

正如下面Chip所建议的,我改变了我的功能。php消除对jquery的调用并删除register调用。我现在有:

function puckpros_load_my_scripts() {  

     wp_enqueue_script(\'kwicks\', get_stylesheet_directory_uri().\'/js/jquery.kwicks.js\', array(\'jquery\') );

     wp_enqueue_script(\'equalheights\', get_stylesheet_directory_uri().\'/js/jquery.equalheights.js\', array(\'jquery\') );

     wp_enqueue_script(\'wslaunch\', get_stylesheet_directory_uri().\'/js/wsLaunch.js\', array(\'jquery\') );
}  

add_action(\'wp_enqueue_scripts\', \'puckpros_load_my_scripts\'); 
但我的脚本equalheights不会执行,但如果我直接在标题中加载,它会执行,如下所示:

<script type="text/javascript" src="<?php bloginfo(\'stylesheet_directory\');?>/js/jquery.kwicks.js"></script>
<script type="text/javascript" src="<?php bloginfo(\'stylesheet_directory\');?>/js/jquery.equalheights.js"></script>
<script type="text/javascript" src="<?php bloginfo(\'stylesheet_directory\');?>/js/wsLaunch.js"></script>
现在我又被难住了。我想“做得好”并排队,但我无法让它工作。

谢谢你的帮助。

1 个回复
SO网友:Chip Bennett

您不能(当然,您可以,但您可能会遇到像这样的依赖性问题)在wp_enqueue_scripts 那是registered 更早,并且已经用作依赖项。

最好的解决方案是摆脱自定义jquery代码,只依赖核心捆绑的jquery。(加载jQuery的非核心捆绑版本,尤其是比核心捆绑版本旧的版本,会导致很多问题。)

function puckpros_load_my_scripts() {  
    wp_enqueue_script(\'menu\', get_stylesheet_directory_uri().\'/js/menu.js\', array(\'jquery\') );  
    wp_enqueue_script(\'kwicks\', get_stylesheet_directory_uri().\'/js/jquery.kwicks.js\', array(\'jquery\') ); 
    wp_enqueue_script(\'equalheights\', get_stylesheet_directory_uri().\'/js/jquery.equalheights.js\', array(\'jquery\') ); 
}  
add_action(\'wp_enqueue_scripts\', \'puckpros_load_my_scripts\'); 
注意:为了简单起见,我删除了wp_register_script() 通话;在这种情况下,它们是多余的。

但如果您必须取消注册核心捆绑jQuery才能注册自己的版本,请尝试在init.

function pleasedonotderegistercorejquery() { 
    wp_deregister_script( \'jquery\' );  
    wp_register_script(\'jquery\', \'http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js\');  
    wp_enqueue_script(\'jquery\');  
}
add_action( \'init\', \'pleasedonotderegistercorejquery\' );

结束

相关推荐