将脚本排在所有其他脚本之后(包括异步脚本)

时间:2016-03-07 作者:carbide20

我想在Wordpress中加入一个脚本。此脚本依赖于另一个(prettypoto)来运行,也依赖于正在加载的JQuery。我希望我的脚本是页面上最后一个包含的脚本。

在阅读了本答案中关于使用wp\\U enqueue\\U scipt的内容后:https://stackoverflow.com/a/19914138/1745715

在fostertime很好地引导我在下面的注释中进行了一些调试之后,我发现我的脚本无法排队,因为最后要加载的脚本(themify.gallery.js,我在下面的注释中错了,当时我认为它是carousel.js)是在一个名为main的themify javascript文件中的函数中异步完成的。js(主题/主题化超/主题化/主题化/js/main.js)

此处是加载位置:

    InitGallery: function ($el, $args) {
        var lightboxConditions = ((themifyScript.lightbox.lightboxContentImages && $(themifyScript.lightbox.contentImagesAreas).length && themifyScript.lightbox.lightboxGalleryOn) || themifyScript.lightbox.lightboxGalleryOn) ? true : false;
        if ($(\'.module.module-gallery\').length > 0 || $(\'.module.module-image\').length > 0 || $(\'.lightbox\').length || lightboxConditions) {
            if ($(\'.module.module-gallery\').length > 0)
                this.showcaseGallery();
            this.LoadAsync(themify_vars.url + \'/js/themify.gallery.js\', function () {
                Themify.GalleryCallBack($el, $args);
            }, null, null, function () {
                return (\'undefined\' !== typeof ThemifyGallery);
            });
        }
    },
毫无疑问,我可以在加载themify的行之后,在这个函数中添加javascript include。陈列室js。然而,我想确保我可以升级我的主题化主题,而不会导致更改丢失。为了解决这个问题,我使用了一个儿童主题。作为这条主线。js位于themes文件夹中,是否可以像覆盖普通模板文件一样覆盖它,并进行更改?即使是这样,覆盖整个main是否真的安全。当我担心以后升级Themify的能力时,我会使用js文件吗?或者有没有一种破坏性较小的方法可以从其他地方将我的include代码注入到这个函数中?接受关于最佳解决方案的建议。

2 个回复
SO网友:carbide20

阅读了一些内容后,我发现用这种方式无法覆盖JS文件中的一个函数。解决方案是覆盖整个main。js文件,以便进行更改。然后我把新的main排队。js脚本,其名称与原始版本中注册的名称完全相同:

// Enqueue main js that will load others needed js
wp_register_script(\'themify-main-script\', \'/wp-includes/js/main.js\', array(\'jquery\'), THEMIFY_VERSION, true);
wp_enqueue_script(\'themify-main-script\');

SO网友:fostertime

我会先对你的帖子发表评论,但我没有足够的声誉…:/

是否通过加载所有其他脚本wp_enqueue_script?

如果你var_dump( $GLOBALS[\'wp_scripts\']->registered ); 您可以查看所有已注册/排队的脚本(通过wp_enqueue_script : how to change loading order of scripts?)

您应该能够更改依赖项(array(\'jquery\') ) 在您的wp_register_scriptarray(\'handle-of-last-enqueued-script\') 这将确保在加载脚本之前不会加载该脚本。