2017-12-11 26 views
2

in woocommerce 다른 재고 번호에 대해 다른 텍스트를 표시하기 위해 "재고 있음"텍스트를 변경했습니다. 따라서 위의 3에 해당하는 주식 번호는 sais입니다 : "5에서 주식"(css와 함께 녹색으로 표시) 및 재고 번호가 3 이하이면 "단지 2 왼쪽"(css로 빨간색으로 표시됨)이라고 표시됩니다. 아마존이하는 것처럼.상품 변형 재고 수량이 WooCommerce에 표시되지 않습니다

당신이 여기에서 볼 수 있듯이이 간단한 제품과 완벽하게 작동합니다 : https://edelmix.de/superdry-urban-blau-limette-quarzuhr-syg164un/

을하지만 변수 제품에 내 코드가 원하는 결과가 없습니다. 물론 위의 설명과 동일한 텍스트를 변형의 적절한 재고 수량과 함께 표시해야합니다.

내가 얻은 것은 전체 유사 콘텐츠의 총 개수입니다. 모든 유사 콘텐츠에 대해 백엔드에서 제품 수준의 제품 수량 관리를 설정하고 유사 콘텐츠의 재고 수량이 다릅니다.

현재 시점의 변수에 결과 생성물

여기서 알 수 https://stage.edelmix.de/buddha-to-buddha-blue-lace-agate-ring-603ba/

도시 양은 5 (드롭 다운로부터의 변동을 선택한 후). 모든 유사 콘텐츠의 총 수량입니다. 다양한 링 크기는 1/3/1의 재고 수량을 가지고 있습니다 (내 테스트에서 가격 옆의 주식 변수를 반향하여 볼 수 있듯이). 이것은 각 변형이 선택 될 때 표시되기를 원하는 것입니다. 사용자 정의 텍스트는 단순한 제품과 동일 함).

내 코드는 지금까지 있습니다 :

add_filter('woocommerce_get_availability', 'custom_get_availability', 1, 2); 

function custom_get_availability($availability, $_product) { 
    global $woocommerce, $product; 
    if ($_product->is_type('variable')) { 
     $available_variations = $product->get_available_variations(); 
     foreach ($available_variations as $variation) 
      { 
       $variation_id = $variation['variation_id']; 
       $variation_obj = new WC_Product_Variation($variation_id); 
       $stock = $variation_obj->get_stock_quantity(); 
       echo $stock; // <-- for testing purpose to see if I do get the individual variation-quantities = works!! 
      } 
     } else { 
      $stock = $product->get_stock_quantity(); 
     } 

    // change text "In Stock' to 'Auf Lager' when quantity more than 3 
    if ($_product->is_in_stock() && $stock > 3) $availability['availability'] = $stock . ' ' .__('auf Lager', 'woocommerce'); 

    // change text to n Left, where n is the quantity 
    if ($_product->is_in_stock() && ($stock <= 3)) $availability['availability'] = '<p class="stock ed_low_stock ' . esc_attr($availability['class']) . '">' . __('Nur noch ' . $stock . ' auf Lager!', 'woocommerce') . '</p>'; 

    // change text "Out of Stock' to 'SOLD OUT' 
    if (!$_product->is_in_stock()) $availability['availability'] = __('zzt. nicht verfügbar!', 'woocommerce'); 

    // change text "In Stock' to 'Special Order' for products with unmanaged stock 
    if (!$_product->managing_stock() && $_product->is_in_stock()) $availability['availability'] = __('Auf Lager', 'woocommerce'); 

    return $availability; 
} 

왜이 작동합니까?

나는 지난 시간 동안 모든 것을 시도했으며 왜 이것이 작동하지 않는지 모릅니다.

도움을 주시면 감사하겠습니다.

+0

잘 작동, 그것은 부분적으로 정확하지만 내 질문에 대답하지 않습니다. – Visualpro

+0

죄송합니다 ... 귀하의 코드를 확인하고 테스트했습니다. 나는 무엇이 잘못되었는지 발견했습니다 ... 아래 답변을보십시오. – LoicTheAztec

답변

0

가정부 합병증이 없기 때문에 효과가 없었습니다. 후크 기능에서 $product 인수는 현재 선택된 제품 변형 (가변 제품)이므로 변수 제품에서 변형을 가져 오는 데 foreach 루프가 필요하지 않습니다.

이제 코드가 더 작아 질 것입니다. 대신이 시도 :

add_filter('woocommerce_get_availability', 'custom_get_availability', 1, 2); 
function custom_get_availability($availability, $_product) { 
    $stock = $_product->get_stock_quantity(); 

    // change text "In Stock' to 'Auf Lager' when quantity more than 3 
    if ($_product->is_in_stock() && $stock > 3) $availability['availability'] = $stock . ' ' .__('auf Lager', 'woocommerce'); 

    // change text to n Left, where n is the quantity 
    if ($_product->is_in_stock() && $stock <= 3) $availability['availability'] = '<p class="stock ed_low_stock ' . esc_attr($availability['class']) . '">' . __('Nur noch ' . $stock . ' auf Lager!', 'woocommerce') . '</p>'; 

    // change text "Out of Stock' to 'SOLD OUT' 
    if (! $_product->is_in_stock()) $availability['availability'] = __('zzt. nicht verfügbar!', 'woocommerce'); 

    // change text "In Stock' to 'Special Order' for products with unmanaged stock 
    if (! $_product->managing_stock() && $_product->is_in_stock()) $availability['availability'] = __('Auf Lager', 'woocommerce'); 

    return $availability; 
} 

코드는 어떤 플러그인 파일도 function.php의 활성 자식 테마 (또는 테마)의 파일이나 간다.

는 테스트 및

+0

고마워요, 로이. 그것은 부분적으로 문제를 해결했습니다. 나는 처음에 당신이 준 코드와 똑같은 코드를 가지고있었습니다. 그러나 그것은 효과가 없었습니다. 그래서 그것을 변경하여 해결하려고 노력했습니다. 더 복잡하게 만들었습니다. 코드를 변경했습니다. $ product 대신 $ _product를 사용합니다. 그것은 저에게 원하는 결과를주었습니다. 나는 정확히 $ product와 $ _product 사이의 차이점을 알지 못한다. 어쩌면 당신은 차이점에서 약간의 빛을 비출 수 있습니까? – Visualpro

+0

나는 이미 upvoted (그러나 나의 투표는 여기에서 새로운 것이기 때문에 보이지 않는다.). 그리고 지금 또한 그것을 표시했습니다. 다시 감사합니다 – Visualpro