个性化阅读
专注于IT技术分析

WordPress:如何禁用jQuery的Gravity Forms包含?

我已经在我的网站上包含了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的脚本, 但不包括jQuery和jQuery migration。我自己包括这些人, 不希望GF为我做这些。

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

function remove_unwanted_assets() {

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

}

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

这似乎排除了GF的一切。

任何帮助或指导, 我们将不胜感激。谢谢。


#1


可靠地”注销”默认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);

#2


我试图完成同样的事情, 但发现了一个简单的解决方法。我在自己的已编译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;
}

结合这些内容, 我就可以不调用排队jquery, 也可以在页脚中包含所有内容。

祝好运

赞(0) 打赏
未经允许不得转载:srcmini » WordPress:如何禁用jQuery的Gravity Forms包含?
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏