无法理解如何在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脚本。