无法理解如何在WordPress中正确排队jQuery

所以按照建议,我将我的脚本排入function.php文件而不是像下面的例子一样在头部排队:

function bok_scripts() { wp_enqueue_script( 'custom', get_template_directory_uri() . '/js/custom.js' ); } add_action( 'wp_enqueue_scripts', 'bok_scripts' ); 

问题是这个JavaScript不起作用,除非我使用通常的方法将jQuery添加到头部:

  

但是,我经常遇到的问题是WordPress使用wp_head();自动加载jQuery版本wp_head(); 来自wp-admin / includes目录。 因为jQuery加载了2x,所以它会破坏一些代码。 例如,以下将抛出’This is not a function($)’错误:

 $(window).load(function(){ $('#modal-notices').modal('show'); }); 

有谁知道如何克服这个问题? 我尝试了很多东西,但似乎所有工作都是从wp-admin / includes目录中删除jQuery。 但显然,这不是一个正确的解决方案。

您需要做的第一件事是将jQuery声明为脚本的依赖项,以便WordPress知道加载它。

要做这个改变:

 wp_enqueue_script( 'custom', get_template_directory_uri() . '/js/custom.js' ); 

至:

 wp_enqueue_script( 'custom', get_template_directory_uri() . '/js/custom.js', array( 'jquery' ) ); 

你面临的第二个问题是WordPress中的jQuery在noConflict模式下加载。 这意味着全局“$”快捷方式不再可用。 以下是一些更多信息: http : //codex.wordpress.org/Function_Reference/wp_enqueue_script#jQuery_noConflict_Wrappers

要让您的脚本更改工作:

 $(window).load(function(){ $('#modal-notices').modal('show'); }); 

至:

 (function($) { $(window).load(function(){ $('#modal-notices').modal('show'); }); })(jQuery); 

最后一定要删除你直接添加到页眉/页脚而不是排队的任何jQuery脚本。