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 的脚本,但不包含 jQuery 和 jQuery迁移。我自己包含这些,不希望 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 并且在页脚中包含所有内容。
祝你好运
我已经在我的网站上包含了 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迁移。我自己包含这些,不希望 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 并且在页脚中包含所有内容。
祝你好运