2016-01-14 127 views
0

我對Woocommerce上的庫存管理有一個非常奇怪的行爲。對於已啓用庫存管理的產品,庫存量爲100件,庫存狀態爲「可用」,每次我執行訂單時,產品庫存均爲負值並斷貨。在Woocommerce上訂購後產品脫銷

例如,如果我做了2件產品的訂單,股票在訂單後立即到-2,即使股票在100之前。

該產品是一個簡單的,沒有任何屬性。我用下面的掛鉤,以改變一些標籤和東西,但沒有一個似乎與此相關的問題:

add_filter('woocommerce_product_single_add_to_cart_text', array(&$this->wc, 'add_to_cart_text'), 11); 
add_filter('woocommerce_add_to_cart', array(&$this->wc, 'add_to_cart'), 10, 1); 
add_action('woocommerce_cart_item_removed', array(&$this->wc, 'cart_item_removed'), 10, 1); 
add_action('woocommerce_order_status_completed', array(&$this->wc, 'order_status_completed'), 10, 1); 
add_action('woocommerce_after_shop_loop_item', array(&$this->wc, 'replace_add_to_cart')); 

總之,woocommerce_product_single_add_to_cart_text更改添加到購物車按鈕標籤,woocommerce_add_to_cart地方一些增值經銷商在會議上,woocommerce_cart_item_removed刪除這些會話從購物車中刪除物品,woocommerce_order_status_completed做一些與會話變量的東西(從這些會話變量更新CPT - 我根本不碰訂單或產品),woocommerce_after_shop_loop_item在產品列表上顯示一個按鈕。我試圖禁用woocommerce_order_status_completed掛鉤,它沒有改變任何東西。

如果您認爲有些人可能與此股票有關,我會粘貼這些函數的任何代碼。

我正在使用最新版本的Woocommerce和Wordpress。

+1

我沒有直接的答案,但我會測試您的所有自定義代碼,禁用所有插件,並使用默認主題。然後慢慢重新啓用所有的部分,直到你可以隔離罪魁禍首。如果問題仍然存在於默認狀態,我們可以假設WooCommerce存在一個錯誤,並應該在他們的[github](http://www.github.com/woothemes/woocommerce)上報告錯誤。 – helgatheviking

+1

@helgatheviking你說得對,主題提供的一些插件(Shindig)正在這樣做。我發佈了一個解釋這個答案。 – vard

回答

1

我發現了罪魁禍首,因爲helgatheviking建議我逐一禁用所有插件,發現這個插件進展點擊導入the theme提供並標記爲「推薦的主題使用」在做這個。

我的猜測是,它是與此相關的過濾器在插件代碼:

add_filter('add_post_metadata', array($this, 'check_previous_meta'), 10, 5); 

這是做這樣的:

public function check_previous_meta($continue, $post_id, $meta_key, $meta_value, $unique) { 
    $old_value = get_metadata('post', $post_id, $meta_key); 
    if (count($old_value) == 1) { 
     if ($old_value[0] === $meta_value) { 
      return false; 
     } elseif ($old_value[0] !== $meta_value) { 
      update_post_meta($post_id, $meta_key, $meta_value); 
      return false; 
     } 
    } 
} 

在這樣做的缺點是,它是將該股元價值原始(-2),而不是減少現有的元值,Woocommerce似乎在他的一端使用了一些過濾器 - 這是一個被該過濾器覆蓋的行爲。

我想這可以通過更改過濾器優先級來解決,但只是禁用插件對我很好,因爲我不需要導入預覽數據。

相關問題