Gravity Forms - 嵌入表单时使 JS 排队?
Gravity Forms - Enqueue JS when form embedded?
我希望仅在嵌入表单(嵌入短代码和 php 时)才能将某些 JavaScript 入队。
Gravity Forms 是否有一个在嵌入表单时触发的动作挂钩?然后我可以做这样的事情。
add_action('some_gforms_hook', function() {
add_action('wp_enqueue_scripts', function() {
wp_enqueue_script( 'postcode', get_bloginfo('stylesheet_directory') . '/modules/Postcode/assets/js/postcode.js', array('jquery') );
wp_localize_script( 'postcode', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
});
});
如果没有这样的钩子,是否有另一种(非 hacky)方式来归档我想要的东西?
我在文档中找到了这个例子。
add_action( 'gform_register_init_scripts', 'gform_format_money' );
function gform_format_money( $form ) {
$script = '(function($){' .
'$('.gf_money input').each(function(){' .
'$(this).val(gformFormatMoney($(this).val()));' .
'}).change(function(){' .
'$(this).val(gformFormatMoney($(this).val()));' .
'});' .
'})(jQuery);';
GFFormDisplay::add_init_script( $form['id'], 'format_money', GFFormDisplay::ON_PAGE_RENDER, $script );
}
这个例子的问题是我不喜欢在我的 PHP 文件中编写的 JS,并且 add_init_script()
函数需要一个带有 JS 的字符串作为参数。
我可以使用 file_get_contents()
从文件中获取 JS,但是我将无法本地化用于注入 AJAX url.
的脚本
我现在使用问题中的钩子,效果很好。
add_action( 'gform_register_init_scripts', function() {
add_action('wp_enqueue_scripts', function() {
wp_enqueue_script( 'postcode', get_bloginfo('stylesheet_directory') . '/modules/Postcode/assets/js/postcode.js', array('jquery') );
wp_localize_script( 'postcode', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
});
});
您正在寻找 gform_enqueue_scripts。它传递 $form
对象,以便您确定是否应为给定表单加载脚本。
我希望仅在嵌入表单(嵌入短代码和 php 时)才能将某些 JavaScript 入队。
Gravity Forms 是否有一个在嵌入表单时触发的动作挂钩?然后我可以做这样的事情。
add_action('some_gforms_hook', function() {
add_action('wp_enqueue_scripts', function() {
wp_enqueue_script( 'postcode', get_bloginfo('stylesheet_directory') . '/modules/Postcode/assets/js/postcode.js', array('jquery') );
wp_localize_script( 'postcode', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
});
});
如果没有这样的钩子,是否有另一种(非 hacky)方式来归档我想要的东西?
我在文档中找到了这个例子。
add_action( 'gform_register_init_scripts', 'gform_format_money' );
function gform_format_money( $form ) {
$script = '(function($){' .
'$('.gf_money input').each(function(){' .
'$(this).val(gformFormatMoney($(this).val()));' .
'}).change(function(){' .
'$(this).val(gformFormatMoney($(this).val()));' .
'});' .
'})(jQuery);';
GFFormDisplay::add_init_script( $form['id'], 'format_money', GFFormDisplay::ON_PAGE_RENDER, $script );
}
这个例子的问题是我不喜欢在我的 PHP 文件中编写的 JS,并且 add_init_script()
函数需要一个带有 JS 的字符串作为参数。
我可以使用 file_get_contents()
从文件中获取 JS,但是我将无法本地化用于注入 AJAX url.
我现在使用问题中的钩子,效果很好。
add_action( 'gform_register_init_scripts', function() {
add_action('wp_enqueue_scripts', function() {
wp_enqueue_script( 'postcode', get_bloginfo('stylesheet_directory') . '/modules/Postcode/assets/js/postcode.js', array('jquery') );
wp_localize_script( 'postcode', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
});
});
您正在寻找 gform_enqueue_scripts。它传递 $form
对象,以便您确定是否应为给定表单加载脚本。