2017-10-18 2 views
1

내 WooCommerce 스토어에는 간단한 제품과 변수 제품이 있습니다. 간단한 제품과 변형 모두 'pre_order'의 메타 값이 있습니다 (예/아니오).WooCommerce의 특정 변형에 대한 장바구니 추가 텍스트는 어떻게 변경합니까?

백엔드에서이 옵션을 설정하면 장바구니에 추가 버튼에 '장바구니에 추가'가 아니라 '선주문'이라고 말하고 싶습니다.

나는이 사용하여 필터 또는 편집 파일 템플릿을 변경 아무런 문제가 없었습니다 간단한 제품의

, 변화 ...하지만 훨씬 더 까다로운 것

변화 옵션은이 과정 또한 내가 중, 후 가격 및 SKU에 업데이트를 선택하면 위에서 언급 한 메타 값을 확인하고 해당 변형에 '예'라는 메타 값이있는 경우 버튼 텍스트를 변경하고 싶습니다. 그렇게 할 방법을 찾을 수 없습니다!

답변

0

WooCommerce는 variation_id라는 숨겨진 입력 필드를 제공합니다. 유사 콘텐츠가 변경되는 즉시 업데이트 된 유사 콘텐츠 ID가 숨겨진 입력 필드에 저장됩니다. 따라서 먼저이 입력 필드의 값이 업데이트 될 때 jQuery를 사용하여 감지해야합니다. 자신의 Ajax 요청을 감지하고이 변경이 사전 주문에 할당되었는지 여부를 확인하십시오. 예. 이후에 추가 할 텍스트를 변경할 수 있습니다. 아약스의 반응은 성공적이다.

0

WooCommerce는 이라는 데이터 속성에 유사 콘텐츠 (예 : 가격, 크기, 가중치 등)를 .variations_form 요소에 저장합니다. 이 데이터는 사용자가 특정 유사 콘텐츠를 선택할 때 가격 및 기타 세부 정보를 표시하는 데 사용됩니다.

add_filter('woocommerce_available_variation', 'vna_add_variation_meta'); 
function vna_add_variation_meta($dataattr, $product, $variation) { 
    $dataattr['pre_order'] = get_post_meta($variation->get_id(), 'pre_order', true); 
    return $dataattr; 
} 

당신은 class-wc-product-variable.php 파일에 woocommerce_available_variation에 대한 자세한 정보를 얻을 수있다 : 당신은 필터를 같은 woocommerce_available_variation 뭔가를 사용하여이 데이터 속성에 메타 값을 추가 할 수 있습니다.

DOM 요소에 메타 값이 있으면 다음 이벤트를 사용하여 사용자가 대안 페이지를 언제 선택했는지 알 수 있습니다.

$(".single_variation_wrap").on("show_variation", function (event, variation) { 
    // Fired when the user selects all the required dropdowns/attributes 
    // and a final variation is selected/shown 
    // Here you will need to get the value of 'pre_order' from the variation object 
    // something like: variation.pre_order 
    // and take appropriate action 
}); 

참고 : 일부 오타가있을 수 있으므로 코드가 안된)

관련 문제