在插件脚本之前添加脚本

时间:2016-07-04 作者:Alex C

我有一个网站,它使用谷歌的API进行jquery和jquery的回退。问题是,我无法在jquery api尝试之后立即进行回退。所发生的情况是,在一系列需要jquery的插件脚本之后添加回退文件,然后失败。如何更改添加这些插件脚本的顺序或位置?下面是我注册的文件:

var_dump( $GLOBALS[\'wp_scripts\']->registered ); 

2 个回复
SO网友:TomC

将回退代码添加到插件中,并将插件保存在MU文件夹中:http://codex.wordpress.org/Must_Use_Plugins.

那么这将在任何其他插件之前运行

SO网友:majick

这里有一种稍微不同的方法,用CDN替换现有的排队脚本,并添加回退。还与WordPress中现有的jQuery版本相匹配。在实践中发现它非常可靠:

add_action(\'wp_enqueue_scripts\',\'jquery_cdn_with_fallback\');
function jquery_cdn_with_fallback() {
    global $wp_version;
    // get the jquery handle depending on WP version
    $jqueryhandle = (version_compare($wp_version, \'3.6-alpha1\', \'>=\') ) ? \'jquery-core\' : \'jquery\';
    // get the version of built-in Jquery in WordPress
    $wpjquery = $GLOBALS[\'wp_scripts\']->registered[$jquery_handle]->ver;

    $jquery = \'https://ajax.googleapis.com/ajax/libs/jquery/\'.$wpjquery.\'/jquery.min.js\';

    // replace the existing jquery script URL
    wp_deregister_script($jqueryhandle);
    wp_register_script($jqueryhandle, $jquery, false, $jqueryversion, true);
    wp_enqueue_script($jqueryhandle);

    // add fallback via script_loader_tag filter
    add_filter(\'script_loader_tag\',\'jquery_fallback\', 10, 2);
    function jquery_fallback($scripttag, $handle) {
        global $wp_version;
        $jqueryhandle = (version_compare($wp_version, \'3.6-alpha1\', \'>=\') ) ? \'jquery-core\' : \'jquery\';
        if ( ($handle == $jqueryhandle) && (strstr($scripttag,\'jquery.min.js\')) ) {
            $jquery = urlencode(site_url().\'/wp-includes/js/jquery/jquery.js\');

            // instant fallback to local WP jquery on failure
            $fallback = "</script><script>if (!window.jQuery) {document.write(unescape(\'%3Cscript src=\\"".$jquery."\\"%3E%3C\\/script%3E\'));}</script>";
            $scripttag = str_replace(\'</script>\',$fallback, $scripttag);
        }
        return $scripttag;
    }
}
根据以下答案将其改编为WP:https://stackoverflow.com/questions/1014203/best-way-to-use-googles-hosted-jquery-but-fall-back-to-my-hosted-library-on-go