在我的WordPress主题中不能使用Java代码

时间:2018-02-06 作者:morteza Yung

嗨,我的java脚本代码在我的wordpress 主题我将我的scripts.js 文件问题是什么,预期的行为是什么?

    function my_scripts() {

    wp_enqueue_style( \'responsive\', get_template_directory_uri() .\'/assets/css/responsive.css\' , array() );

    wp_enqueue_script( \'scripts\', get_template_directory_uri() . \'/assets/js/scripts.js\', array(),  true );

} 
add_action( \'wp_enqueue_scripts\', \'my_scripts\' );
scripts.js 文件:

jQuery(document).ready(function($){
    /*------ Masonry ------*/
    $(".post-four.grid .row").masonry({
        itemSelector: ".post",
        horizontalOrder: true
    });

    /*------ Search button ------*/
    let hasFocus = false;
    $(".header-top .header-search .searchform i").click(function() {
        const setState = hasFocus ? \'blur\' : \'focus\';
        $(\'.header-top .header-search .searchform #s\')[setState]();
        hasFocus = !hasFocus;
    });
    let hasFocusTwo = false;
    $(".header-sticky-inner .header-search i").click(function() {
        const setStateTwo = hasFocusTwo ? \'blur\' : \'focus\';
        $(\'.header-sticky-inner .header-search #input-search\')[setStateTwo]();
        hasFocusTwo = !hasFocusTwo;
    });

    /*------ Sidebar ------*/
    $(".sidebar-button #sidebarButton").click(function(){
        $("body").addClass("sidebar-active");
    });
    $(".sidebar-right #closebtn").click(function(){
        $("body").removeClass("sidebar-active");
    });
    $("#content-bg").click(function(){
        $("body").removeClass("sidebar-active");
    });
    $(".sidebar-button-menu #sidebarButton").click(function(){
        $("body").addClass("sidebar-active-menu");
    });
    $(".sidebar-menu #closebtn").click(function(){
        $("body").removeClass("sidebar-active-menu");
    });
    $("#content-bg").click(function(){
        $("body").removeClass("sidebar-active-menu");
    });

    /*------ Drop Down Menu ------*/
    let dropdown = $(".has-child a");
    let i;

    for (i = 0; i < dropdown.length; i++) {
        dropdown[i].addEventListener("click", function() {
            this.classList.toggle("active");
            let dropdownContent = this.nextElementSibling;
            if (dropdownContent.style.display === "block") {
                dropdownContent.style.display = "none";
            } else {
                dropdownContent.style.display = "block";
            }
        });
    }

    /*------ Grid Tab ------*/
    $(\'.grid-tab > li > a\').on(\'click\', function(e) {
        e.preventDefault(); 
        $(this).closest(\'.grid-tab > li\').toggleClass(\'active-li\')
        .siblings(\'.grid-tab > li\').removeClass(\'active-li\');
    });

    /*------ Scroll ------*/
    let previousScroll = 0;
    let memoScroll = $("header").height() - $(".header-sticky").height();
    $(window).scroll(function(event){
        let scrolled = $(window).scrollTop();
        if (scrolled > memoScroll){
            if (scrolled < previousScroll){
                $(".header-sticky").addClass("visible");
            } else {
                $(".header-sticky").removeClass("visible");
            }
        }else {
                $(".header-sticky").removeClass("visible");
        }
        previousScroll = scrolled;
    });

});

/*------ OWL Carousel ------*/
$(".owl-instagram, .owl-category, .owl-post-wg").owlCarousel({
    items:1,
    dots:true
});
$(".sidebar-right .owl-instagram,.sidebar-right .owl-category,.sidebar-right .owl-post-wg").owlCarousel({
    items:1,
    dots:true
});
$(".owl-instagram-feed").owlCarousel({
    items:5,
    dots:false,
    nav: true,
    navText: [\'<i class="ion-android-arrow-back"></i>\',\'<i class="ion-android-arrow-forward"></i>\'],
    loop: true,
    responsiveClass: true,
    responsive: {
        0:{
            items:2
        },
        576:{
            items:3
        },
        768:{
            items:4
        },
        992:{

        }
    }
});
$(".owl-slider").owlCarousel({
    items: 1,
    loop: true,
    nav: true,
    navText: [\'<i class="ion-android-arrow-back"></i>\',\'<i class="ion-android-arrow-forward"></i>\'],
    dots: true,
    mouseDrag: false
});
$(".owl-slider-center").owlCarousel({
    items: 2,
    center: true,
    margin: 10,
    loop: true,
    nav: true,
    navText: [\'<i class="ion-android-arrow-back"></i>\',\'<i class="ion-android-arrow-forward"></i>\'],
    dots: false,
    mouseDrag: true,
    removeClass: true,
    responsive:{
        0:{
            center:false,
            items:1
        },
        576:{
            items:1,
            center:false
        },
        768:{
            items:1,
            center:false
        },
        992:{

        }
    }
});

2 个回复
SO网友:Maxim Sarandi

第一个-设置jquery 在依赖项数组中。如果您正在使用库,请包含它们。所有库都必须注册,而不是排队。使用wp_register_script();. 并在dependencies数组中设置libs。

wp_register_script(\'my-masonry\', \'path to lib\', array(), null, true);
wp_enqueue_script( \'scripts\', get_template_directory_uri() . \'/assets/js/scripts.js\', array(\'jquery\', \'my-masonry\'),  null, true );
这样的代码必须解决您的问题。还有。。

在此包装您的代码

(function($){
    // your code
})(jQuery);
相反jQuery(document).ready(function($){});

并为脚本使用更多唯一的句柄(名称)。因为一些插件可以使用类似的名称注册和排队脚本。

SO网友:Iceable

您的代码似乎依赖于多个库,因此您需要将它们列为依赖项,以确保WordPress加载它们,以便它们在脚本之前可用。

要要求依赖项,需要在中作为第三个参数传递的数组中包含它们的句柄wp_enqueue_script().

脚本使用jQuery和Masonry,它们都捆绑在WP core中,并且可能需要各自的句柄:jqueryjquery-masonry (或masonry对于本机JS版本)。

您的脚本还使用Owl Carousel,它未捆绑在WP core中,因此您需要确保它已加载到您的站点上,并要求它作为依赖项。

假设您已经在手柄上注册了猫头鹰旋转木马\'owlcarousel\', 然后你的电话wp_enqueue_script() 应为:

wp_enqueue_script(
    \'my-scripts\',
    get_template_directory_uri() . \'/assets/js/scripts.js\',
    array( \'jquery\', \'jquery-masonry\', \'owlcarousel\' ),
    true
);
如果主题中还没有猫头鹰旋转木马,那么download it, 滴owl.carousel.min.js 在您的主题中/assets/js/ 文件夹,并在脚本之前将其注册到:

wp_register_script(
    \'owlcarousel\',
    get_template_directory_uri() . \'/assets/js/owl.carousel.min.js\',
    array(),
    true
);
参考文献:

此页面还包含WP Core中包含的脚本列表及其句柄,用于要求它们作为依赖项。

结束

相关推荐

javascript ajax and nonce

在动态创建表单时,我很难使用Wordpress nonce验证通过对php后端的XML请求来实现nonce。我同意表单构建版本wp_nonce_field( \'delete-comment_\'.$comment_id ); 因此,在通过javascript本地化时,我尝试使用其他nonce选项。$nonce = wp_create_nonce( \'my-action_\'.$post->ID ); 然后要验证,似乎有两种选择。check_ajax_referer( \'p