WordPress:如何禁用包含 jQuery 的重力形式?

WordPress: How can I disable Gravity Forms inclusion of jQuery?

我已经在我的网站上包含了 jQuery,但是当使用 Gravity Forms 的一些条件逻辑时,它会再次包含 jQuery,当然还有它自己的脚本。

输出如下:

<script type='text/javascript' src='//localhost:8080/wp-includes/js/jquery/jquery.js?ver=1.11.3'></script>
<script type='text/javascript' src='//localhost:8080/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>
<script type='text/javascript' src='//localhost:8080/wp-content/plugins/gravityforms/js/jquery.json.js?ver=1.9.14'></script>
<script type='text/javascript' src='//localhost:8080/wp-content/plugins/gravityforms/js/gravityforms.min.js?ver=1.9.14'></script>
<script type='text/javascript' src='//localhost:8080/wp-content/plugins/gravityforms/js/conditional_logic.min.js?ver=1.9.14'></script>

我想做的是保留 Gravity Form 的脚本,但不包含 jQueryjQuery迁移。我自己包含这些,不希望 GF 为我做这些。

我已经搜索了包含这些脚本的句柄,但找不到正确的钩子。我有以下内容,但它也排除了 GF 脚本,这显然不是我想要发生的事情:

function remove_unwanted_assets() {

    // Gravity Forms plugin.
    wp_deregister_script('jquery');

}

add_action('wp_enqueue_scripts', 'remove_unwanted_assets', 100);

这似乎排除了 GF 的所有内容。

非常感谢任何帮助或指导。谢谢

可靠地 "deregister" 默认 jQuery 的唯一方法是将 add_action() 调用的优先级保持在 10。这是因为 Gravity Forms 将优先级为 11 的脚本排入队列。然后,您需要在同一句柄下注册您自己的 jQuery 版本:

function so_33280386_alter_assets() {
    // De-register the default version of jQuery
    wp_deregister_script( 'jquery' );
    // Register a new version of jQuery under the same handle
    wp_register_script( 'jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', false, '1.9.1', true );
}
add_action('wp_enqueue_scripts', 'so_33280386_alter_assets', 10);

我试图完成同样的事情,但我找到了一个简单的解决方法。我在我自己编译的 js 文件中添加了 jQuery,所以我不希望 WordPress 的文件在那里。只需注销脚本,然后重新注册,无需添加源。

wp_deregister_script( 'jquery' );

wp_register_script( 'jquery', '', '', '', true );

我还使用了其他一些代码片段以保持 ajax 加载正确。

function gravity_js_to_footer() {
    return true;
}
add_filter("gform_init_scripts_footer", "gravity_js_to_footer");



// Fix the ajax jquery inline code issue when gravity js is being called in the footer
//https://bjornjohansen.no/load-gravity-forms-js-in-footer
add_filter( 'gform_cdata_open', 'wrap_gform_cdata_open' );
function wrap_gform_cdata_open( $content = '' ) {
    $content = 'document.addEventListener( "DOMContentLoaded", function() { ';
    return $content;
}
add_filter( 'gform_cdata_close', 'wrap_gform_cdata_close' );
function wrap_gform_cdata_close( $content = '' ) {
    $content = ' }, false );';
    return $content;
}

结合这些东西,我可以不调用 enqueue jquery 并且在页脚中包含所有内容。

祝你好运