2017-09-19 1 views
1

양식이 임베드 된 (shortcode 및 php로 emedded 된) 경우에만 특정 JavaScript를 큐에 넣길 원합니다.중력 양식 - 양식을 삽입 할 때 JS를 대기열에 포함 시키시겠습니까?

양식이 삽입 될 때 트리거되는 중력 양식에 대한 작업 훅이 있습니까? 그러면 나는 이런 것을 할 수 있습니다.

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 개체를 전달하므로 지정된 양식에 스크립트를로드해야하는지 결정합니다.