我有一个运行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中的代码 可在同一目录中找到。
答案 0 :(得分:-1)
您需要加载脚本并将jQuery添加为依赖项:
// Enqueue a script that has both jQuery (automatically registered by WordPress)
// and my-script (registered earlier) as dependencies.
wp_enqueue_script( 'my-careers-script', get_stylesheet_directory_uri() . '/js/my-careers-script.js', array( 'jquery', 'my-script' ) );
从WordPress Codex链接:https://codex.wordpress.org/Function_Reference/wp_register_script#Example_of_Automatic_Dependency_Loading