2014-04-07 3 views
1

"woocommerce_single_product_image_html"을 필터링하여 제품의 맞춤 이미지를 표시하는 플러그인을 작성 중입니다.Woocommerce : 제품 변형을위한 맞춤 이미지

jquery를 통해 드롭 다운 상자의 값을 가져 오는 데 문제가 있습니다. 지금까지 내가 시도한 다음에 선택을 변경할 때 나는 위의 코드를 추가하여 작동하는지 확인 할 수 있었다

jQuery(document).ready(function($) { 
    // Code here will be executed on document ready. Use $ as normal. 

    $('#color').change(function() { 
      var selected = $(this).children("option").filter(":selected").text(); 
      alert(selected); 
    }); 
}); 

".change()"를 부하에 대한 변경 이벤트를 트리거,하지만 트리거하지 않으려면 드롭 다운 상자. 내 추측에 따르면 이것은 woocommerece의 핵심 변경 이벤트와 충돌합니다. 플러그인을 통해이 작업을 수행하는 방법에 대한 제안 사항은 무엇입니까?

답변

5

이렇게 나는 마침내 이것을 추적했다. woocommerce 자바 스크립트 파일 중 하나 (assets/js/frontend/add-to-cart-variation.js)는 다음 명령을 실행하여 모든 변경 이벤트를 바인딩 해제 했으므로 광산이 발사되지 않는 이유를 설명합니다.

this.find('.variations select').unbind('change focusin'); 

내 솔루션은 내 기능을 추가하기위한 기본 플러그인을 작성하는 것이 었습니다. 다행히도 woocommerce_variable_add_to_cart 함수는 플러그 가능하므로 위의 바인딩 해제 라인을 사용하지 않고 add-to-cart-variation.js 파일의 자체 버전을로드하기 위해 사본을 만들어서 조정할 수있었습니다. 이렇게하면 코어 플러그인 코드가 수정되지 않은 상태로 유지됩니다.

function woocommerce_variable_add_to_cart() { 
    global $product; 

    // Enqueue variation scripts 
    wp_deregister_script('wc-add-to-cart-variation'); 
    wp_register_script('wc-add-to-cart-variation', plugins_url('/js/add-to-cart-variation.js', __FILE__), array('jquery'), WC_VERSION, true); 
    wp_enqueue_script('wc-add-to-cart-variation'); 

    // Load the template 
    wc_get_template('single-product/add-to-cart/variable.php', array(
     'available_variations' => $product->get_available_variations(), 
     'attributes'   => $product->get_variation_attributes(), 
     'selected_attributes' => $product->get_variation_default_attributes() 
    )); 
} 

이 정보가 도움이 되었기를 바랍니다.