Begrenzen Sie die Anzahl der Warenkorbartikel in Woocommerce

Lesezeit: 3 Minuten

Begrenzen Sie die Anzahl der Warenkorbartikel in Woocommerce
Benutzer1481153

Ich verwende Woocommerce und benötige Folgendes:

  1. Da das Produkt in ein anderes Land verkauft wird und der Zoll dieses Landes nur eine Gesamtmenge von 6 erlaubt, muss ich verhindern, dass Kunden mehr als 6 Artikel (Produkte) bestellen.

  2. 6 ist die Summe der Artikel oder Produkte. Der Kunde kann 1 Produkt in einer Menge von 6 oder 2 Produkte in einer Menge von jeweils 3 bestellen. Der Zoll erlaubt nur eine Gesamtzahl von 6 Artikeln.

  3. Wenn sich mehr als 6 Artikel im Warenkorb befinden, sollte eine Warnung erscheinen und den Kunden daran hindern, zur Kasse zu gehen.

Ist es möglich, Warenkorbartikel auf 6 zu begrenzen und eine Meldung anzuzeigen, wenn dieses Limit überschritten wird?

  • Downvoting für die Zollvorschriften dieses Landes.

    – Deepak Kamat

    4. November 2020 um 18:26 Uhr

Es gibt 2 Aktionen, die Sie überprüfen und steuern können, wenn Sie die Artikel im Warenkorb einschränken möchten:

  • Wenn ein Produkt in den Warenkorb gelegt wird (In-Shop-Seiten und Produktseiten)
  • Wenn die Mengen auf der Warenkorbseite aktualisiert werden

Verwenden einer benutzerdefinierten Funktion, die eingehakt ist woocommerce_add_to_cart_validation Filter-Hook, ermöglicht es Ihnen, die Warenkorbartikel auf maximal 6 zu beschränken und eine benutzerdefinierte Nachricht anzuzeigen, wenn diese Grenze überschritten wird:

// Checking and validating when products are added to cart
add_filter( 'woocommerce_add_to_cart_validation', 'only_six_items_allowed_add_to_cart', 10, 3 );

function only_six_items_allowed_add_to_cart( $passed, $product_id, $quantity ) {

    $cart_items_count = WC()->cart->get_cart_contents_count();
    $total_count = $cart_items_count + $quantity;

    if( $cart_items_count >= 6 || $total_count > 6 ){
        // Set to false
        $passed = false;
        // Display a message
         wc_add_notice( __( "You can’t have more than 6 items in cart", "woocommerce" ), "error" );
    }
    return $passed;
}

Verwenden einer benutzerdefinierten Funktion, die eingehakt ist woocommerce_update_cart_validation Filter-Hook, ermöglicht es Ihnen, die Aktualisierung der Anzahl der Einkaufswagenartikel auf Ihr Limit von 6 Einkaufswagenartikeln zu steuern und eine benutzerdefinierte Nachricht anzuzeigen, wenn dieses Limit überschritten wird:

// Checking and validating when updating cart item quantities when products are added to cart
add_filter( 'woocommerce_update_cart_validation', 'only_six_items_allowed_cart_update', 10, 4 );
function only_six_items_allowed_cart_update( $passed, $cart_item_key, $values, $updated_quantity ) {

    $cart_items_count = WC()->cart->get_cart_contents_count();
    $original_quantity = $values['quantity'];
    $total_count = $cart_items_count - $original_quantity + $updated_quantity;

    if( $cart_items_count > 6 || $total_count > 6 ){
        // Set to false
        $passed = false;
        // Display a message
         wc_add_notice( __( "You can’t have more than 6 items in cart", "woocommerce" ), "error" );
    }
    return $passed;
}

Code geht in die function.php-Datei Ihres aktiven Child-Themes (oder Themes) oder auch in jede Plugin-Datei.

Dieser Code ist getestet und funktioniert

  • sollte das auf WC 3.9.1 funktionieren? Die Antwort ist 3 Jahre alt. Ich werde es testen, aber nur um zu wissen, ob ich auf ein seltsames Verhalten stoßen kann. Danke!

    – Santiago Valdes

    3. November 2020 um 19:59 Uhr

  • @SantiagoValdés Dies sollte auf allen Versionen seit WooCommerce 3 funktionieren

    – LoicTheAztec

    3. November 2020 um 20:24 Uhr

Sie können zusätzliche Validierungsparameter hinzufügen, wenn Sie das Produkt validieren, das dem Warenkorb hinzugefügt wird. woocommerce_add_to_cart_validation erwartet ein true oder false Zurückzugebender Wert, je nachdem, ob das Produkt in den Warenkorb gelegt werden kann:

/**
 * When an item is added to the cart, check total cart quantity
 */
function so_21363268_limit_cart_quantity( $valid, $product_id, $quantity ) {

    $max_allowed = 6;
    $current_cart_count = WC()->cart->get_cart_contents_count();

    if( ( $current_cart_count > $max_allowed || $current_cart_count + $quantity > $max_allowed ) && $valid ){
        wc_add_notice( sprint( __( 'Whoa hold up. You can only have %d items in your cart', 'your-plugin-textdomain' ), $max ), 'error' );
        $valid = false;
    }

    return $valid;

}
add_filter( 'woocommerce_add_to_cart_validation', 'so_21363268_limit_cart_quantity', 10, 3 );

  • Denn du bist wie Speedy Gonzales, schnell wie der Blitz …

    – LoicTheAztec

    14. September 2017 um 21:40 Uhr


954450cookie-checkBegrenzen Sie die Anzahl der Warenkorbartikel in Woocommerce

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy