Gewähren Sie einen Rabatt nur auf den zweiten Warenkorbartikel in Woocommerce

Lesezeit: 2 Minuten

Bogdans Benutzeravatar
Bogdan

So erhalten und ändern Sie den Preis des zweiter Artikel in meinem Warenkorb?

Ich möchte einen Rabatt von -3 % auf das zweite Produkt gewähren (Artikel im Warenkorb bereits nach Preis sortiert, höchster Preis oben).

Ich denke, es muss eingerechnet werden woocommerce_before_calculate_totals oder wie Rabatt in woocommerce_cart_calculate_fees?

Danke

LoicTheAztecs Benutzeravatar
LoicTheAztec

Aktualisiert (Kompatibilität mit Woocommerce 3+ hinzugefügt)

Für ein Produkt ist es besser, einen Artikel zu verwenden woocommerce_before_calculate_totals Aktionshaken:

add_action( 'woocommerce_before_calculate_totals', 'discount_on_2nd_cart_item', 10, 1 );
function discount_on_2nd_cart_item( $cart ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    // Initialising
    $count = 0;
    $percentage = 3; // 3 %

    // Iterating though each cart items
    foreach ( $cart->get_cart() as $cart_item ) {
        $count++;
        if( 2 == $count){ // Second item only
            $price = $cart_item['data']->get_price(); // product price
            $discounted_price = $price * (1 - ($percentage / 100)); // calculation

            // Set the new price
            $cart_item['data']->set_price( $discounted_price );
            break; // stop the loop
        }
    }
}

Oder nutzen Sie einen Warenkorbrabatt (negative Warenkorbgebühr):

add_action( 'woocommerce_cart_calculate_fees', 'discount_on_2nd_cart_item', 10, 1 );
function discount_on_2nd_cart_item( $cart ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // Initialising
    $count = 0;
    $percentage = 3; // 3 %

    // Iterating though each cart items
    foreach ( $cart->get_cart() as $cart_item ) {
        $count++;
        if( 2 == $count){ // Second item only
            $price = $cart_item['data']->get_price(); // product price
            $discount = $price * $percentage / 100; // calculation
            $second_item = true;
            break; // stop the loop
        }
    }
    if( isset($discount) && $discount > 0 )
        $cart->add_fee( __("2nd item 3% discount", 'woocommerce'), -$discount );
}

Der Code befindet sich in der Datei „function.php“ Ihres aktiven untergeordneten Themas (oder Themes) oder auch in einer beliebigen Plugin-Datei.

Dieser Code wurde getestet und funktioniert.

  • Der Code funktioniert großartig, aber nur, wenn die beiden Elemente nicht identisch sind. Wenn Sie zwei Artikel mit derselben ID auswählen, wird der Rabatt nicht automatisch angewendet.

    – ToTech

    1. Okt. 2018 um 1:04

  • @ToTech Dieser Code basiert nicht auf der Anzahl der Artikel, sondern auf der Anzahl der Artikel im Warenkorb. Für die Artikelmenge im Warenkorb muss der Code unterschiedlich sein.

    – LoicTheAztec

    1. Okt. 2018 um 2:55


  • @LoicTheAztec haben Sie ein Beispiel für die Artikelmenge im Warenkorb?

    – FilipeOS

    28. Februar 2019 um 9:49 Uhr

  • @FilipeOS Bitte suchen Sie in diesen Threads

    – LoicTheAztec

    28. Februar 2019 um 9:51 Uhr

1451260cookie-checkGewähren Sie einen Rabatt nur auf den zweiten Warenkorbartikel in Woocommerce

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

Privacy policy