2017-01-24 3 views
1

Mit WooCommerce, ich suche, ob es möglich ist, einen bestimmten Artikel (aus dem Warenkorb) zu entfernen, wenn ein anderer bestimmter Artikel im Warenkorb ist.Entfernen Sie einen bestimmten Warenkorb Artikel, wenn Sie zum Warenkorb einen anderen spezifischen Artikel hinzufügen

Mein Webshop hat eine kostenlose Version eines Produkts, die dem Kunden einen einfachen Zugriff auf den Inhalt der Website ermöglicht. Die kostenpflichtige Version wird mehr Zugriff auf Inhalte ermöglichen. Wenn die kostenlose Version bereits im Warenkorb ist und die kostenpflichtige Version in den Warenkorb hinzugefügt wird, wird die kostenlose Version aus dem Warenkorb entfernt.

Ich habe versucht, mögliche Optionen und Plugins zu sehen, aber die meisten von ihnen haben Bedingungen basierend auf Preisgestaltung und solche Dinge.

Jede Hilfe ist willkommen und wenn ich eine Antwort finde, bevor ich hier bin, werde ich teilen, wie ich es bekommen habe.

Danke.

+1

Willkommen bei Stackoverflow. Unglücklicherweise ist Stackoverflow weder ein Code-Schreibdienst noch ein Tool-Suchdienst, daher wird Ihre Frage wahrscheinlich nicht beantwortet. Was Sie tun möchten, ist möglich. Sicher. Sie müssen in den Quellcode von Woocommerce gehen und den richtigen Aktions-Hook/Filter-Hook finden, wo Sie eine Aktion auslösen können, um das Produkt zu entfernen. – Blackbam

Antwort

6

Ja ist möglich, mit einer benutzerdefinierten Funktion zum Beispiel in woocommerce_add_to_cart Haken gehakt:

add_action('woocommerce_add_to_cart', 'check_product_added_to_cart', 10, 6); 
function check_product_added_to_cart($cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data) { 

    // Set HERE your targeted product ID 
    $target_product_id = 31; 
    // Set HERE the product ID to remove 
    $item_id_to_remove = 37; 

    // Initialising some variables 
    $has_item = false; 
    $is_product_id = false; 

    foreach(WC()->cart->get_cart() as $key => $item){ 
     // Check if the item to remove is in cart 
     if($item['product_id'] == $item_id_to_remove){ 
      $has_item = true; 
      $key_to_remove = $key; 
     } 

     // Check if we add to cart the targeted product ID 
     if($product_id == $target_product_id){ 
      $is_product_id = true; 
     } 
    } 

    if($has_item && $is_product_id){ 
     WC()->cart->remove_cart_item($key_to_remove); 

     // Optionaly displaying a notice for the removed item: 
     wc_add_notice(__('The product "blab bla" has been removed from cart.', 'theme_domain'), 'notice'); 
    } 
} 

Dieser Code geht in function.php Datei Ihres aktiven Kind Thema (oder Thema) oder auch in jeder Plugin Datei.

Dieser Code wurde getestet und funktioniert.

Verwandte Themen