programing

WooCommerce : 상품이 품절되어 백오더를 허용하지 않는지 확인합니다.

codeshow 2023. 10. 24. 21:39
반응형

WooCommerce : 상품이 품절되어 백오더를 허용하지 않는지 확인합니다.

재고가 부족하고(재고수량 0) 백오더가 불가능한 상품인지 확인하려면 어떻게 해야 합니까?다음 코드는 어떤 이유로 작동하지 않습니다.

add_action('woocommerce_before_add_to_cart_button','show_stock_single');
function show_stock_single() {
  global $product;
  if($product->get_stock_quantity()<1) {
    if($product->backorders_allowed()) echo '<p>Backorders allowed</p>';
    else echo '<p>Backorders not allowed</p>';
  }
  else echo '<p>Available</p>';
}

백오더가 가능한 제품에는 '백오더 허용'이라고 표시돼 있는데 백오더가 허용되지 않으면 아무 것도 표시되지 않는데요. 왜 그럴까요?

내 생각대로 되지 않는 if 진술이 나올 때마다, 내가 제일 먼저 시도하는 것은 그것을 뒤집는 것입니다. 그러니 이것을 다시 시도해보세요.

if($product->get_stock_quantity()>0) {
    echo '<p>Available</p>';
} else {
    if($product->backorders_allowed()) { 
        echo '<p>Backorders allowed</p>';
    } else {
        echo '<p>Backorders not allowed</p>';
    }
}

- 또한 다양한 if 비트를 {...}에 포함시키겠습니다.} 대괄호PHP는 싱글 라인 if로 좀 더 완화된 요구사항을 허용해야 한다는 것을 알고 있지만, 그것이 원인일 수도 있습니다!

특정 코드에 문제가 있을 때는 항상 각 변수가 올바른 값을 반환하는지 확인합니다.

이 경우 저는 각 섹션을 분리하여 무엇이 실패할 수 있는지 확인하고 후크를 변경하여 충돌을 일으키지 않도록 했습니다.

코드가 너무 길었다면 죄송합니다.저는 각 파트가 하는 일을 이해하기 위해 각 파트에 코멘트를 달았습니다.그리고 각각의 결과에 대한 이미지를 추가했습니다.

사례1 https://i.stack.imgur.com/rmu5m.jpg

사례 2 https://i.stack.imgur.com/Zxnrt.jpg

사례 3 https://i.stack.imgur.com/v8Tzc.jpg

add_action('woocommerce_single_product_summary','show_stock_single',5);
function show_stock_single() {
  global $product;
  $StockQ=$product->get_stock_quantity();

  if ($StockQ>=1)//Stock is Available
  {
    echo "<p>Available</p>";
  }
  elseif($StockQ<1)//Product is Out of Stock
  {
    echo "<p>Out of Stock</p>";
    if ($product->backorders_allowed())//Product is out of stock AND allow backorders
    {
        echo "<p>Backorder Allowed</p>";
    }
    else//Product is out of stock AND DO NOT allow backorders
    {
        echo "<p>Backorder NOT Allowed</p>";
    }
  }
}

참고: 플러그인/템플릿 충돌을 방지하기 위해 사용하는 테마는 Storefront입니다.

언급URL : https://stackoverflow.com/questions/51327748/woocommerce-check-if-product-is-out-of-stock-and-doesnt-allow-backorders

반응형