我的wordpress网站不会将脚本加载到我的页面中。我在functions.php中添加了以下函数:
function nav_script () {
wp_enqueue_script( 'script', get_stylesheet_directory_uri() .'/js/script.js', array('jQuery'), '1.0.0', true);
}
add_action('wp_enqueue_scripts', 'nav_script');
并且scripts.js中包含的脚本如下:
$(document).ready(function() {
var stickyNavTop = $('.blog-nav').offset().top;
var stickyNav = function(){
var scrollTop = $(window).scrollTop();
if (scrollTop > stickyNavTop) {
$('.blog-nav').addClass('sticky');
}
else {
$('.blog-nav').removeClass('sticky');
}
};
stickyNav();
$(window).scroll(function() {
stickyNav();
});
});
当我查看页面的源代码时,我看不到脚本,所以它因某些原因没有加载...我的头部有wp_head而正文之前有wp_footer结束标记,所以我对可能发生的事情一无所知,那里的任何人都可以提供帮助吗?正如我在JSFiddle中尝试的那样,该函数在普通的html中运行...
function nav_script () {
?>
<script>
$(document).ready(function() {
var stickyNavTop = $('.blog-nav').offset().top;
var stickyNav = function(){
var scrollTop = $(window).scrollTop();
if (scrollTop > stickyNavTop) {
$('.blog-nav').addClass('sticky');
} else {
$('.blog-nav').removeClass('sticky');
}
};
stickyNav();
$(window).scroll(function() {
stickyNav();
});
});
</script>
<?php
}
add_action('wp_head', 'nav_script');
但我注意到两件事:
一:如果我不将<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
CDN插入头部,它就不会起作用;
TWO:它只会在我重新加载网站时才有效,这表明我有一些插件冲突......
答案 0 :(得分:0)
我已经解决了我的问题。对于第一个问题,即.js文件没有加载到页面中,因为源代码中没有。我使用的代码类似于我之前使用的代码,只是更简单,删除了{ {1}}以及与版本和页脚相关的值,如下所示:function
array
...我无法准确说出原因,但如果您将我的源代码与我在评论中发布的源代码进行比较,您会注意到&#39; /js/script.js&的存在#39 ;. - 页面来源:https://jsfiddle.net/qx5fbxa7/ - 。
第二个问题:除非我刷新页面(如编辑),否则脚本不会加载...我用条件逻辑设置条件来设置类:
blognav_script () {
wp_enqueue_script('blognav', get_stylesheet_directory_uri() . '/js/script.js');
}
add_action('wp_enqueue_scripts', 'blognav_script');
我实际上改变了整个脚本,但是为了指出如何解决这个问题,这就是修复它的行!
答案 1 :(得分:-1)
WordPress无法将$
识别为jQuery
的缩写,只需添加
var $ = jQuery
在顶部