2017-09-19 12 views
1

フォームが埋め込まれている(shortcodeとphpでemeddedされている)ときにのみ、特定の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'))); 
    }); 
}); 

このようなフックがない場合は、別の(ハッピーではない)方法がありますか?

答えて

0

この例はドキュメントにあります。

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'))); 
    }); 
}); 
1

あなたが探しているのはgform_enqueue_scriptsです。 $formオブジェクトを渡すので、指定したフォーム用にスクリプトをロードする必要があるかどうかを判断します。

関連する問題