2012-08-07 6 views
21

WooCommerce 핵심 Javascript 파일, 특히 프론트 엔드 파일을 대체하는 올바른 방법은 무엇입니까? 이것에 관한 문서를 찾지 못했고 프론트 엔드 스크립트 파일의 경로가 플러그인에 하드 코딩되어 있기 때문에 자산 폴더를 내 테마에 두는 것이 아무 것도하지 않을지 의심 스럽습니다.WooCommerce Frontend Javascript를 무시하십시오.

내 테마 디렉토리에있는 파일을로드 할 수 있도록 가장 깨끗한 방법은 무엇입니까?

감사합니다.

+0

이 완전히 자신의 스크립트를 비활성화 하시겠습니까, 또는 오버라이드 (override) :


이 포함되어 있으며 모든 스크립트가 wp_enqueue_script() 통해로드 또는 등록 wp_register_script()으로 관리 $wp_scripts 전역 객체와 직접 협력하여 해결 될 수있다 특별한 행동이나 사건? –

+0

글쎄, 자바 스크립트 파일 (add-to-cart-variation.js)을 완전히 덮어 쓸 예정이었습니다. – Sebastien

+1

이 파일에는 준비가되어있는 문서에 바인딩되는 이벤트가 두 개 밖에없는 것처럼 보입니다. 당신은 당신 자신의 스크립트로 그들을 언 바인딩 할 수 있습니다. line-4 및 line-216 https://github.com/woothemes/woocommerce/blob/master/assets/js/frontend/add-to-cart-variation.js. 나는 그 플러그인으로 일하지 않았지만 당신도 수동으로 그 파일을 수정할 수 있다고 생각한다. –

답변

27

add-to-cart.js를 제외하고 동일한 문제가있었습니다. 간단한 해결책은 woocommerce 스크립트를 DEQUEUE로 바꾸고 ENQUEUE로 대체하는 것입니다.

wp_dequeue_script('wc-add-to-cart'); 
wp_enqueue_script('wc-add-to-cart', get_bloginfo('stylesheet_directory'). '/js/add-to-cart-multi.js' , array('jquery'), false, true); 

당신은 '화장실 - 추가 - 투 - 카트 변화'스크립트를 큐에서 제거 할 것 : 내 경우에는 내가 내 functions.php에 다음을 추가했다. 나는 당신이 이 같은 이름으로 ENQUEUE에을 가지고 있다고 생각하지 않지만, 나는 그럴 수없는 이유를 볼 수 없었다.

희망이 도움이됩니다.

WordPress 버전 4.0.1 및 WooCommerce 버전 2.2.10을 사용하는 경우. ,

 

wp_deregister_script('wc-add-to-cart'); 
wp_register_script('wc-add-to-cart', get_bloginfo('stylesheet_directory'). '/js/add-to-cart-multi.js' , array('jquery'), WC_VERSION, TRUE); 
wp_enqueue_script('wc-add-to-cart'); 
 
+4

같은 이름으로 엔큐하는 것이 더 낫다. 그래서 어떤 의존성도 깨뜨리지 않을 것이다. 할 수 있습니다. – Leonel

+2

동일한 핸들을 사용하여 큐에 넣으려고하면 원래의 핸들을 다시 대기열에 넣기 전에 원본 핸들을 wp_dequeue_script()로 등록 취소하지 않으면 원본 파일이 계속 대기열에 들어갑니다. – cfx

+0

제발 내 질문을 확인하시기 바랍니다 http://wordpress.stackexchange.com/questions/215238/how-to-add-quick-edit-in-woocommerce-order-section –

1

class-wc-frontend-scripts.php 파일에 function.php에

function themeslug_enqueue_script() { 
wp_enqueue_script('add-to-cart-variation', get_bloginfo('url'). '/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart-variation.js', false); 
} 
add_action('wp_enqueue_scripts', 'themeslug_enqueue_script'); 
19

WooCommerce로드 프론트 엔드 스크립트와 스타일이 섹션을 추가하고 스크립트를 등록하는 방법도 찾을 수 있습니다 다음과 같은 스크립트를 사용할 수 있습니다 대기열에 포함되고 지역화 된 종속성.

Wordpress에서 스크립트를 대기열에 추가하는 가장 좋은 장소는 wp_enqueue_scripts 액션 훅입니다. Wordpress가 완전히로드되었지만 출력이 이루어지기 전의 순간이기 때문입니다. 또한 코드의 한 섹션에서 관련된 모든 스크립트와 스타일을 큐에 넣고 싶습니다.

일부 스크립트를 완전히 제거하려면 wp_deregister_script() 또는 wp_dequeue_script()을 호출하는 것으로 충분합니다. 그러나 때로는 플러그인을 테마보다 먼저로드하기 때문에 변경 사항을 적용하고 기존 종속성, 변수 및 현지화를 유지하려는 경우 문제가 발생할 수 있습니다. 따라서 대기열 기능이 예상대로 작동하지 않습니다. 간단한 wp_dequeue_script() => wp_enqueue_script()not work이고 wp_deregister_script() => wp_register_script()은 작동하지만 지역화 된 데이터는 손실됩니다.

add_action('wp_enqueue_scripts', 'load_theme_scripts'); 

    function load_theme_scripts() { 
     global $wp_scripts; 
     $wp_scripts->registered[ 'wc-add-to-cart' ]->src = get_template_directory_uri() . '/woocommerce/js/wc-add-to-cart.js'; 
    } 
+0

마지막 하나는 나를 위해, 감사의 번들 작품 –

+0

나는 스크립트 종속성이나 버전 등에 대해 걱정할 필요가 없기 때문에'$ wp_scripts' 옵션을 좋아했습니다. +1 –

+0

이것은 정말 놀라운 대답입니다! 나는 당신이 함께 일할 수 있는지 또는 당신이 수정할 수있는'$ wp_scripts' 객체가 있다는 것을 전혀 몰랐습니다. 이거 엄청나 네! 나는 너에게 맥주를 사고 싶다! – Radmation