2016-09-07 5 views
0
나는 woocommerce_product_is_in_stock 필터/후크 덮어 쓰기를 시도하고

, 나는 이미 답 발견 : Additional stock options in woocommerce는 WooCommerce 사용자 정의 재고 상태

add_filter('woocommerce_product_is_in_stock', 'woocommerce_product_is_in_stock'); 

function woocommerce_product_is_in_stock($is_in_stock) { 
    global $product; 

    // array of custom stock statuses that will have add to cart button 
    $stock_statuses = array('onrequest','preorder'); 

    if (!$is_in_stock && in_array($product->stock_status, $stock_statuses)) { 
     $is_in_stock = true; 
    } 

    return $is_in_stock; 
} 

를하지만 도중에 내게 도움이 유일한 것으로,이에 대한 재고로 제품을 반환하지 대부분의 경우지만 카트를 볼 때마다 제품을 찾을 수 없습니다. 글로벌 $ 제품은 내가 var_dump 할 때마다 "NULL"인 것처럼 보입니다.

장바구니를 통해 자신 만의 고유 재고 상태로 제품을 주문할 수 있도록이 코드를 어떻게 변경할 수 있습니까?

미리 감사드립니다.

답변

1

나는 woocommerce에 woocommerce의 is_in_stock() 함수를 업데이트하여 그것을했다 -> 포함 -> 초록 -> 추상 WC-product.php

public function is_in_stock() { 

    if ($this->managing_stock() && $this->backorders_allowed()) { 
     return true; 
    } elseif ($this->managing_stock() && $this->get_total_stock() <= get_option('woocommerce_notify_no_stock_amount')) { 
     return false; 
    } else { 
     return $this->stock_status === 'instock'; 
} 

public function is_in_stock() { 

    $stock_statuses = array('onrequest','preorder'); 

    if ($this->get_total_stock() > get_option('woocommerce_notify_no_stock_amount') && in_array($this->stock_status, $stock_statuses)) { 
     return true; 
    } 

    if ($this->managing_stock() && $this->backorders_allowed()) { 
     return true; 
    } elseif ($this->managing_stock() && $this->get_total_stock() <= get_option('woocommerce_notify_no_stock_amount')) { 
     return false; 
    } else { 
     return $this->stock_status === 'instock'; 
    } 
} 

관련 문제