我是WordPress开发人员的新手,我有以下问题。
我自己创建了这个网站的模板,从0开始:http://www.asper-eritrea.com
现在我添加了这个照片库插件:https://wordpress.org/plugins/robo-gallery/
问题是现在,当我访问使用此插件的页面时,例如:http://www.asper-eritrea.com/photo-gallery/
图库未显示,在FireBug控制台中,我收到以下错误消息:
TypeError: $ is not a function
$(document).ready(function() {
所以我认为这可能取决于它无法检索 JQuery 的事实,但我绝对不确定,因为我在打开我网站的其他页面时也有同样的错误,所以我不确定缺少 JQuery 进入照片库页面是我问题的原因。
在我的模板的函数.php文件中,我有以下函数,以这种方式将所有 JavaScript 资源(包括 JQuery)排队:
/* Hooks a function on to a specific action (an action is a PHP function that is executed at specific
* points throughout the WordPress Core)
* @param 'wp_enqueue_scripts': The name of the action to which 'wpb_adding_styles' is hooked (wp_enqueue_scripts
* is the proper hook to use when enqueuing items that are meant to appear on the front end)
*/
add_action('wp_enqueue_scripts', 'wpb_adding_styles');
/* Function automatically executed by the hook 'load_java_scripts':
* 1) Load all my JavaScripts
*/
function load_java_scripts() {
// Load JQuery:
wp_enqueue_script('jquery');
// Load FlexSlider JavaScript
wp_enqueue_script('flexSlider-js', get_template_directory_uri() . '/assets/plugins/flexslider/jquery.flexslider.js', array('jquery'), 'v2.1', true);
// Load bootstrap.min.js:
wp_enqueue_script('bootstrap.min-js', get_template_directory_uri() . '/assets/bootstrap/js/bootstrap.min.js', array('jquery'), 'v3.0.3', true);
// Load FancyBox:
wp_enqueue_script('fancy-js', get_template_directory_uri() . '/assets/plugins/fancybox/jquery.fancybox.pack.js', array('jquery'), 'v2.1.5', true);
// Load scripts.js:
wp_enqueue_script('myScripts-js', get_template_directory_uri() . '/assets/js/scripts.js', array('jquery'), '1.0', true);
// Load Modernizer:
wp_enqueue_script('myodernizer-js', get_template_directory_uri() . '/assets/js/modernizr.custom.js', array('jquery'), '2.6.2', true);
}
add_action('wp_enqueue_scripts', 'load_java_scripts');
那么出了什么问题呢?我错过了什么?
奇怪的是,要排队 JQuery,有:
wp_enqueue_script('jquery');
但没有指定 Jquery 源文件的确切文件夹(就像对其他资源所做的那样)。
我把 JQuery 放到/assets/bootstrap/js/jquery.js 文件中。
WordPress通常包含jQuery.noConflict(),它删除了$
别名,以防止与其他可能也在使用$
的库发生冲突
改变:
$(document).ready(function() {
自
jQuery(document).ready(function($) {
// OK to use `$` here