2016-12-02 67 views
1

在WooCommerce我基本上需要設置的10股票數量爲4種獨立的產品,所以當有人購買這些產品的1整體庫存水平下降到9WooCommerce產品庫存數量爲多個項目

庫存數量因爲這些產品必須連接,因此當購買1時,所有這些產品的數量都會下降。

我不能簡單地將1件產品設置爲'可變產品'來達到此目的,因爲每件產品都必須是'簡單產品'。

有誰知道一個插件或建立WooCommerce的方式來實現這一目標嗎?

+0

當你想觸發這個事件?只有在訂單完成? –

回答

1

您可以試用此自定義函數,該函數使用掛鉤,首先獲取客戶訂單中已購買產品的最小股票價值,然後使用此股票價格更新所有產品。這是未經測試的,所以你將不得不給我一些反饋。

下面是該代碼:

add_action('woocommerce_thankyou', 'updating_product_unified_stock', 10, 1); 
function unifying_product_stock($order_id){ 

    $stock_updated = get_post_meta($order_id, 'stock_updated', true); 

    if(empty($stock_updated)): 

     // Inserting in the order meta data a custom field value to avoid repetition of this code, 
     // if the customer reload the "Order received" page… 
     update_post_meta($order_id, 'stock_updated', 'yes'); 

     $products_stock_arr = array(); 
     $products_ids = array(); 

     // Getting the Order Object post data 
     $order = wc_get_order($order_id); 

     foreach ($order->get_items() as $item_id => $item) { 
      $product_stock = get_post_meta($item_id, '_stock', true); 
      $products_stock_arr[] = $product_stock; // adding the product stock in the array 
     } 

     // Get the smallest stock value in the array of stock values 
     $new_stock_number = min($products_stock_arr); 

     // get all published simple products 
     $all_products = get_posts(array(
      'post_type' => 'product', 
      'posts_per_page' => -1, 
      'post_status' => 'publish' 
     )); 

     // Iterating through each published product 
     // UPDATING PRODUCTS WITH THE NEW STOCK VALUE: 
     foreach($all_products as $product) 
      update_post_meta($product_id, '_stock', $new_stock_number); 
    endif; 
} 

此代碼放在你的活躍兒童主題(或主題)的function.php文件或也以任何插件的PHP文件。