2016-09-07 11 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'; 
    } 
} 

関連する問題