Wordpress:在具有多个依赖项的childtheme中加载custom.js.

时间:2015-11-04 21:29:01

标签: wordpress

我有一个运行Master Slider Pro wordpress插件和iLightBox插件的网站。我在wordpress子主题的custom.js文件中运行自定义脚本:

/* Link JavaScript file */
function custom_scripts() {
    wp_register_script( 'custom-script', get_stylesheet_directory_uri() . '/assets/js/custom.js', array('jquery') , false, true );
    wp_enqueue_script( 'custom-script' );
}

我在我的functions.php文件中调用自定义文件:

jQuery(document).ready(function(){

    (function(){
      var groupsArr = [];
      jQuery('[rel^="ilightbox["]').each(function () {
        var group = this.getAttribute("rel");
        jQuery.inArray(group, groupsArr) === -1 && groupsArr.push(group);
      });
      jQuery.each(groupsArr, function (i, groupName) {
        jQuery('[rel="' + groupName + '"]').iLightBox({ /* options */ });
      });
    })();

  });

我遇到的问题是,有时它加载自定义脚本(我假设按正确的顺序)并且我的滑块加载并且当我单击图像时灯箱显示...其他时候滑块卡在加载状态并显示错误:

Uncaught TypeError: jQuery(...).iLightBox is not a function

我相信我在加载jQuery文件后加载custom.js文件...我假设的是,lighbox插件有时会在jQuery之后加载,因此在custom.js文件之后加载这就是为什么它找不到暮光之城功能?

无论如何我可以阻止这个?

我一直在做一些阅读并与我的主题作者(已集成了暮光之城功能)进行了交谈。

我的代码现在如下所示:

/* register script that defines ilightbox (in parent theme) */
wp_register_script( 'ilightbox_script', get_stylesheet_directory . '/includes/class-avada-scripts.php' );

/* Link JavaScript file */
function custom_scripts() {
    wp_register_script( 'custom-script', get_stylesheet_directory_uri() . '/assets/js/custom.js', array('jquery', 'ilightbox_script') , false, true );
    wp_enqueue_script( 'custom-script' );
}

add_action( 'wp_enqueue_scripts', 'custom_scripts', 99 );

我相信我现在已经注册了包含ilightbox功能的脚本(存储在我的父主题中)。然后我在jQuery之后调用了custom.js文件并且加载了已注册的脚本。但它仍然无法正常工作。我也从我正在尝试注册的文件中收到以下错误:

Uncaught SyntaxError: Unexpected token <

也许我误解了一切,所以我复制了主题作者对我说的话,当我问到哪个罚款定义了暮光之城功能时......你觉得怎么样?

  

这些脚本在class-avada-scripts.php中排队   以下目录

     

/可湿性粉剂内容/主题/阿瓦达索/包括

     

并且所有JS代码都在main.min.js中,可在以下目录中找到

     

/可湿性粉剂内容/主题/阿瓦达索/资产/ JS

     

但是,如果您从

启用开发者模式      

Wp admin - &gt;外观 - &gt;主题选项 - &gt;先进

     

然后你可以修改avada-lightbox.js和lightbox.js中的代码   可在同一目录中找到。

更新(2015年11月22日):

最新更新让我使用:

/* Ensure jquery loads before iLightBox */
add_action( 'wp_enqueue_scripts', 'add_my_script' );

function add_my_script() {
                wp_register_script( 'ilightbox_script', get_theme_root_uri() . '/Avada/includes/class-avada-scripts.php', array( 'jquery' ) );
                wp_register_script( 'custom-script', get_stylesheet_directory_uri() . '/assets/js/custom.js' ); 

                wp_enqueue_script('ilightbox_script');
                wp_enqueue_script('custom-script');
}

仍然是同样的错误:(

0 个答案:

没有答案