Legen Sie die Mindestmenge für einige Produktkategorien oder Produkt-IDs in Woocommerce 3.3 fest

Lesezeit: 5 Minuten

Legen Sie die Mindestmenge fur einige Produktkategorien oder Produkt IDs in
Rudolfs

In WooCommerce möchte ich eine Mindestmenge für bestimmte Produkte im Warenkorb festlegen. Wenn der Wert kleiner ist, wird ein Fehler angezeigt.

Beispiel: Der Kunde kann nur zur Kasse gehen, wenn die Menge der Produkte a, b, c im Warenkorb 2 oder mehr beträgt.

  • a: 2
  • b: 2
  • C: 2

Andernfalls erscheint der Fehler „Mindestbestellmenge für jeden Artikel ist 2“.

Es gibt ähnliche Themen in diesem Forum, und ich dachte, dieser Code könnte nützlich sein.

    add_filter( 'woocommerce_quantity_input_min', 'woocommerce_quantity_input_min',10, 2 );
    function woocommerce_quantity_input_min( $min, $product ){
    if ( $product-> ) {
          $min = 2;
    } else {
          $min = 3;
    }
    return $min;
    }

Kann jemand das zum Laufen bringen?

Meine wahren Bedürfnisse: In meinem Geschäft verkaufe ich viele Uhren. Es gibt 6 Produktkategorien:

  • Burberry
  • Daniel Wellington
  • Diesel
  • Emporio Armani
  • Marc Jacobs
  • Michael Kors

Ich brauche eine Bedingung, bei der ein Kunde nur zur Kasse gehen kann, wenn jede Produktmenge auf der Warenkorbseite mindestens 2 beträgt, unabhängig von der Kategorie.

Beachten Sie, dass wir anbieten, Produkte von der Archivseite und der einzelnen Produktseite hinzuzufügen. Wenn von der Archivseite hinzugefügt, ist der Standardwert 1.

Legen Sie die Mindestmenge fur einige Produktkategorien oder Produkt IDs in
LoicTheAztec

Aktualisierung 2 (Es funktioniert jetzt auch für Archivseiten und im Warenkorb für Produktvariationen).

Der folgende Code legt eine Mindestmenge für bestimmte Produktkategorien fest:

// On single product pages
add_filter( 'woocommerce_quantity_input_args', 'min_qty_input_args', 20, 2 );
function min_qty_input_args( $args, $product ) {

    ## ---- Your settings ---- ##

    $product_categories = array('Burberry', 'Daniel Wellington',
        'Diesel', 'Emporio Armani', 'Marc Jacobs', 'Michael Kors');

    $quantity = 2;

    ## ---- The code: set minimun quantity for specific product categories ---- ##

    $product_id = $product->is_type('variation') ? $product->get_parent_id() : $product->get_id();

    if( has_term( $product_categories, 'product_cat', $product_id ) ){
        $args['min_value'] = $quantity;
    }

    return $args;
}

// On archives pages
add_filter( 'woocommerce_loop_add_to_cart_link', 'min_qty_loop_add_to_cart_button', 50, 2 );
function min_qty_loop_add_to_cart_button( $button, $product  ) {
    // Only for non variable products
    if( $product->is_type( 'variable' ) ) return $button; // Exit

    ## ---- Your settings ---- ##

    $product_categories = array('Burberry', 'Daniel Wellington',
        'Diesel', 'Emporio Armani', 'Marc Jacobs', 'Michael Kors');

    $quantity = 2;

    ## ---- The code: set minimun quantity for specific product categories ---- ##

    if( has_term( $product_categories, 'product_cat', $product->get_id() ) ){
        $class = implode( ' ', array_filter( array(
            'button',
            'product_type_' . $product->get_type(),
            $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
            $product->supports( 'ajax_add_to_cart' ) ? 'ajax_add_to_cart' : '',
        ) ) );

        $button = sprintf( '<a rel="nofollow" href="https://stackoverflow.com/questions/49531738/%s" data-quantity="https://stackoverflow.com/questions/49531738/%s" data-product_id="https://stackoverflow.com/questions/49531738/%s" data-product_sku="https://stackoverflow.com/questions/49531738/%s" class="https://stackoverflow.com/questions/49531738/%s">%s</a>',
            esc_url( $product->add_to_cart_url() ),
            esc_attr( isset( $quantity ) ? $quantity : 1 ),
            esc_attr( $product->get_id() ),
            esc_attr( $product->get_sku() ),
            esc_attr( isset( $class ) ? $class : 'button' ),
            esc_html( $product->add_to_cart_text() )
        );
    }
    return $button;
}

Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Getestet und funktioniert.

Zum Produkt Tagsmüssen Sie nur „product_cat“ durch „product_tag“ im Code ändern.


ADDITION: Für Produkt-IDs (Array of IDs)

Damit es für Produkt-IDs funktioniert, verwenden Sie stattdessen:

// On single product pages
add_filter( 'woocommerce_quantity_input_args', 'min_qty_input_args', 20, 2 );
function min_qty_input_args( $args, $product ) {

    ## ---- Your settings ---- ##

    $product_ids = array('23', '52', '75', '87', '90', '102');

    $quantity = 2;

    ## ---- The code: set minimun quantity for specific product Ids ---- ##

    if( in_array( $product->get_id(), $product_ids ) || ( $product->is_type('variation') && in_array( $product->get_parent_id(), $product_ids ) ) ){
        $args['min_value'] = $quantity;
    }

    return $args;
}

// On archives pages
add_filter( 'woocommerce_loop_add_to_cart_link', 'min_qty_loop_add_to_cart_button', 50, 2 );
function min_qty_loop_add_to_cart_button( $button, $product  ) {
    // Only for non variable products
    if( $product->is_type( 'variable' ) ) return $button; // Exit

    ## ---- Your settings ---- ##

    $product_ids = array('23', '52', '75', '87', '90', '102');

    $quantity = 2;

    ## ---- The code: set minimun quantity for specific product IDs ---- ##

    if( in_array( $product->get_id(), $product_ids ) ){
        $class = implode( ' ', array_filter( array(
            'button',
            'product_type_' . $product->get_type(),
            $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
            $product->supports( 'ajax_add_to_cart' ) ? 'ajax_add_to_cart' : '',
        ) ) );

        $button = sprintf( '<a rel="nofollow" href="https://stackoverflow.com/questions/49531738/%s" data-quantity="https://stackoverflow.com/questions/49531738/%s" data-product_id="https://stackoverflow.com/questions/49531738/%s" data-product_sku="https://stackoverflow.com/questions/49531738/%s" class="https://stackoverflow.com/questions/49531738/%s">%s</a>',
            esc_url( $product->add_to_cart_url() ),
            esc_attr( isset( $quantity ) ? $quantity : 1 ),
            esc_attr( $product->get_id() ),
            esc_attr( $product->get_sku() ),
            esc_attr( isset( $class ) ? $class : 'button' ),
            esc_html( $product->add_to_cart_text() )
        );
    }
    return $button;
}

Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Getestet und funktioniert.

  • Leider bekomme ich einen Fehler: Parse error: syntax error, unknown ‘->’ (T_OBJECT_OPERATOR) in C:\wamp64\www\ticdauto\wp-content\themes\specular\functions.php on line 6 . Zeile 6 ist ein – if( in_array( product->get_id(), array( 37, 43, 56) ). Ich arbeite auf meinem Wamp-Server und bin nicht wirklich fortgeschritten. Ich verkaufe viele Uhren und brauche diese Bedingung für alle meine Produkte.

    – Rudolfs

    28. März 2018 um 11:00 Uhr


  • Danke! Ja, das funktioniert, aber nur, wenn das Produkt von einer einzelnen Produktseite in den Warenkorb gelegt wird. Wir bieten jedoch an, Produkte von der Shop-/Archivseite mit der Schaltfläche „In den Warenkorb“ hinzuzufügen. Wenn der Kunde also ein Produkt von der Archivseite hinzufügt, kann er nur 1 Produkt auschecken, wenn er den Mengenwert auf der Warenkorbseite nicht bearbeitet.

    – Rudolfs

    28. März 2018 um 11:52 Uhr

1003730cookie-checkLegen Sie die Mindestmenge für einige Produktkategorien oder Produkt-IDs in Woocommerce 3.3 fest

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

Privacy policy