图库插件的enqueue_scripts出现问题

时间:2015-06-02 15:48:29

标签: javascript php jquery wordpress

我正在尝试使用这个Justified Gallery我发现[http://miromannino.github.io/Justified-Gallery/][1]

[1]:http://miromannino.github.io/Justified-Gallery/在本网站www.dangoodeofficial.co.uk

我设法通过添加这是页脚来实现它 -

<script src="http://dangoodeofficial.co.uk/wp-content/plugins/Justified-Gallery/libs/jquery/jquery.min.js"></script>

<link rel="stylesheet" href="http://dangoodeofficial.co.uk/wp-content/plugins/Justified-Gallery/dist/css/justifiedGallery.min.css" type="text/css" media="all">

<script src="http://dangoodeofficial.co.uk/wp-content/plugins/Justified-Gallery/dist/js/jquery.justifiedGallery.min.js"></script>

但是jquery.min.js弄乱了我网站的其余部分。从上一个问题开始,我问我相信这是因为Wordpress已经内置了jQuery,但是当我在页脚中包含jquery.min.js时,我只能显示该库。

我一直在努力弄清楚如何排队脚本,因为我相信这是解决问题的方法。我之前从未这样做过,所以我真的不知道从哪里开始。我做了我的研究,并将其添加到我的孩子主题functions.php

// Additional Functions
// =============================================================================
function justifiedGallery() {

    wp_enqueue_script('jQuery');

    wp_register_script('JG_jQuery_js', get_template_directory_uri() . '/plugins/Justified-Gallery/libs/jquery/jquery.min.js', array('jQuery'),'', true); 
    wp_register_script('JG_js', get_template_directory_uri() . '/plugins/Justified-Gallery/dist/js/jquery.justifiedGallery.min.js', array('jQuery'),'', true);
    wp_register_style('JG_css', get_template_directory_uri() . '/plugins/Justified-Gallery/dist/css/justifiedGallery.min.css', '','','screen');


    wp_enqueue_script('JG_jQuery_js');
    wp_enqueue_script('JG_js');
    wp_enqueue_style('JG_css');

}

    add_action ('wp_enqueue_scripts', 'justifiedGallery');

但我似乎无法让它发挥作用。我甚至尝试将我想要调用的三个文件上传到我的子主题目录中,因此文件路径为/wp-content/themes/x-child/js/jquery.justifiedGallery.min.js和两个文件的类似文件并使用

get_stylesheet_directory_uri() . 'js/.justifiedGallery.min.js', array('jQuery'),'', true);

我知道某处可能只是一个简单的错误,但由于我的知识有限,我无能为力。非常感激任何的帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

真正的问题似乎是编写得不好的插件,需要您手动将所有JavaScript复制到模板中并手动包含它而不是自己管理它。

由于在现有网站的页脚中手动包含jQuery,jQuery可能已经包含在您的模板中。如果你想确保它只被调用一次,并且不想使用它们内置的jQuery版本,你首先必须取消注册WP已经拥有的JQ版本而不是注册你自己的版本。试试这个:

function externalJQ() {
  if( ! is_admin() ) {
    // Register and Enqueue External jQuery in Footer
    wp_deregister_script('jquery');
    wp_register_script('jquery', "https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js", array(), null, true); // Or whatever version of JQ you want
    wp_enqueue_script('jquery');
  }
}
add_action('wp_enqueue_scripts', 'externalJQ' );

那就是说,任何值得使用jQuery的插件的插件都不应该要求jQuery绑定到$ namespace(这可能是问题的一部分,我没有通过插件的代码)你不应该'我必须这样做。

此外,插件本身应该调用它需要的任何JavaScript。如果您需要在模板中包含任何插件的JavaScript,则可能需要避开此插件。