2016-12-02 3 views
1

In WooCommerce Ich brauche im Grunde so eine Bestandsmenge von 10 für 4 separate Produkte zu setzen, wenn jemand 1 dieser Produkte kauft der Gesamtbestand sinkt auf 9WooCommerce Produktbestandsmengen für mehrere Artikel

Die Menge Lager Für diese Produkte muss eine Verbindung hergestellt werden, wenn 1 gekauft wird, sinkt die Menge für alle Produkte.

Ich kann nicht einfach 1 Produkt als "variables Produkt" einstellen, um dies zu erreichen, da jedes Produkt ein "einfaches Produkt" sein muss.

Kennt jemand ein Plugin oder eine Möglichkeit, WooCommerce einzurichten, um dies zu erreichen?

+0

Wann möchten Sie dieses Ereignis auslösen? Nur auf Bestellung abgeschlossen? –

Antwort

1

Sie können diese benutzerdefinierte Funktion versuchen, die die woocommerce_thankyou Haken verwendet, zuerst zu erhalten, aktualisieren Sie die kleinste Bestandswert der gekauften Produkte im Kundenauftrag und dann alle Produkte mit diesem Bestandswert. Dies ist nicht getestet, also müssen Sie mir etwas Feedback geben.

Hier ist dieser Code:

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; 
} 

Dieser Code geht in function.php Datei Ihres aktiven Kind Thema (oder Thema) oder auch in beliebiger Plugin PHP-Dateien.

Verwandte Themen