首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery在WordPress中不排队

jQuery在WordPress中不排队
EN

Stack Overflow用户
提问于 2021-04-08 17:10:49
回答 2查看 93关注 0票数 0

我正在尝试用CDN版本替换默认的WordPress jQuery。我一直能够做到这一点,但突然之间出现了问题--我不确定这是否是因为最新的WordPress更新。我在functions.php中使用了以下代码:

代码语言:javascript
复制
function replace_default_jquery_with_fallback() {

    $ver = '1.12.4';
    $migrateVer = '1.4.1';

    // Dequeue first then deregister
    wp_dequeue_script( 'jquery' );
    wp_dequeue_script( 'jquery-migrate' );
    wp_deregister_script( 'jquery' );
    wp_deregister_script( 'jquery-migrate' );

    // Fallback
    wp_add_inline_script( 'jquery', 'window.jQuery||document.write(\'<script src="' . includes_url( '/js/jquery/jquery.min.js' ) . '"><\/script>\')' );
    wp_add_inline_script( 'jquery-migrate', 'window.jQuery||document.write(\'<script src="' . includes_url( '/js/jquery/jquery-migrate.min.js' ) . '"><\/script>\')' );

    wp_enqueue_script( 'jquery', "//ajax.googleapis.com/ajax/libs/jquery/$ver/jquery.min.js", '', $ver, false );
    wp_enqueue_script( 'jquery-migrate', "//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/$migrateVer/jquery-migrate.min.js", '', $migrateVer, false );
}
add_action( 'wp_enqueue_scripts', 'replace_default_jquery_with_fallback');

这将输出到页面的头部:

代码语言:javascript
复制
<link rel='dns-prefetch' href='//ajax.googleapis.com' />
<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' />

但是实际的脚本没有排队。如果我将'-test‘附加到其中一个句柄中,它们就会出现,但是内联回退脚本不会。

任何帮助都是非常感谢的,谢谢

泰勒

编辑:在进行了一些搜索之后,我将代码修改为:

代码语言:javascript
复制
add_action( 'wp_enqueue_scripts', 'replace_default_jquery_with_fallback');
function replace_default_jquery_with_fallback() {
    $wp_admin = is_admin();
    $wp_customizer = is_customize_preview();

    if ( $wp_admin || $wp_customizer ) {
        // echo 'We are in the WP Admin or in the WP Customizer';
        return;
    } else {
        // Start of jQuery replacing
        $ver = '1.12.4';
        $migrateVer = '1.4.1';

        // Dequeue first then deregister
        wp_dequeue_script( 'jquery' );
        wp_dequeue_script( 'jquery-core' );
        wp_dequeue_script( 'jquery-migrate' );

        wp_deregister_script( 'jquery' );
        wp_deregister_script( 'jquery-core' );
        wp_deregister_script( 'jquery-migrate' );

        wp_register_script( "jquery-core", "//ajax.googleapis.com/ajax/libs/jquery/$ver/jquery.min.js", array(), $ver, false );
        wp_register_script( "jquery-migrate", "//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/$migrateVer/jquery-migrate.min.js", array(), $migrateVer, false );
        wp_register_script( "jquery", false, array("jquery-core", "jquery-migrate"), null, false );

        // Fallback
        wp_add_inline_script( 'jquery-core', 'window.jQuery||document.write(\'<script src="' . includes_url( '/js/jquery/jquery.min.js' ) . '"><\/script>\')' );
        wp_add_inline_script( 'jquery-migrate', 'window.jQuery||document.write(\'<script src="' . includes_url( '/js/jquery/jquery-migrate.min.js' ) . '"><\/script>\')' );

        wp_enqueue_script( 'jquery' );
    }
}

仍然没有运气..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-12 13:46:53

我在这里找到了解决方案:https://wordpress.stackexchange.com/questions/209091/gravity-forms-loading-jquery

我认为,即使页面上没有表单,重力表单也劫持了'jquery‘句柄,使我无法修改登记队列。使用上面链接的post中的解决方案解决了我的问题(将重力表单脚本移动到页脚,我在页眉中加载我的jQuery ):

代码语言:javascript
复制
add_filter('gform_init_scripts_footer', '__return_true');
票数 0
EN

Stack Overflow用户

发布于 2021-04-08 17:28:15

您试图通过将版本号存储在变量中来动态添加脚本。你可以这样做:

代码语言:javascript
复制
function replace_default_jquery_with_fallback() {

    $ver = '1.12.4';
    $migrateVer = '1.4.1';

    // Dequeue first then deregister
    wp_dequeue_script( 'jquery' );
    wp_dequeue_script( 'jquery-migrate' );
    wp_deregister_script( 'jquery' );
    wp_deregister_script( 'jquery-migrate' );

    // Fallback
    wp_add_inline_script( 'jquery', 'window.jQuery||document.write(\'<script src="' . includes_url( '/js/jquery/jquery.min.js' ) . '"><\/script>\')' );
    wp_add_inline_script( 'jquery-migrate', 'window.jQuery||document.write(\'<script src="' . includes_url( '/js/jquery/jquery-migrate.min.js' ) . '"><\/script>\')' );

    wp_enqueue_script( 'jquery', "https://ajax.googleapis.com/ajax/libs/jquery/".$ver."/jquery.min.js", '', $ver, false );
    wp_enqueue_script( 'jquery-migrate', "https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/".$migrateVer."/jquery-migrate.min.js", '', $migrateVer, false );
}
add_action( 'wp_enqueue_scripts', 'replace_default_jquery_with_fallback');

这将帮助您在wordpress站点中包含jquery,而无需在cdn链接中使用https:,它将无法工作,并且可能会在前端显示错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67008789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档