Wie entferne ich programmgesteuert angewendete Rabattcoupons in Woocommerce?

Lesezeit: 3 Minuten

Benutzeravatar von Waltone
Waltone

Ich habe eine Weile gesucht, aber ich kann nicht finden, wie man Woocommerce-Gutscheine programmgesteuert entfernt.

Ich versuche, Rabatte basierend auf der Gesamtsumme des Warenkorbs zu machen. Ich muss Gutscheine entfernen, denn wenn Sie Produkte im Wert von 1000 € haben (15 % Rabattgutschein angewendet) und Produkte entfernen und nur Produkte im Wert von 50 € lassen, erhalten Sie immer noch diesen 15 % Rabatt, da mein Code den bereits angewendeten Gutschein nicht entfernt .

Also hier ist mein Code für jetzt:

    add_action( 'woocommerce_before_cart', 'apply_matched_coupons' );

function apply_matched_coupons() {
    global $woocommerce;

$coupon_code5 = '5p'; // your coupon code here
$coupon_code10 = '10p'; // your coupon code here
$coupon_code15 = '15p'; // your coupon code here
$coupon_code20 = '20p'; // your coupon code here
$coupon_code25 = '25p'; // your coupon code here

   if ( $woocommerce->cart->has_discount( $coupon_code ) ){ 
return;
}

   if ( $woocommerce->cart->cart_contents_total >= 4000 ) {
        $woocommerce->cart->add_discount( $coupon_code25 );
        $woocommerce->show_messages();
    }
else if ( $woocommerce->cart->cart_contents_total >= 2000 ) {
        $woocommerce->cart->add_discount( $coupon_code20 );
        $woocommerce->show_messages();
    }
else if ( $woocommerce->cart->cart_contents_total >= 1000 ) {
        $woocommerce->cart->add_discount( $coupon_code15 );
        $woocommerce->show_messages();
    }
else if ( $woocommerce->cart->cart_contents_total >= 500 ) {
        $woocommerce->cart->add_discount( $coupon_code10 );
        $woocommerce->show_messages();
    }
else if ( $woocommerce->cart->cart_contents_total >= 200 ) {
        $woocommerce->cart->add_discount( $coupon_code5 );
        $woocommerce->show_messages();
    }
}

Benutzeravatar von doublesharp
doppelt scharf

Um einen einzelnen Gutschein aus dem Warenkorb zu entfernen, verwenden Sie seinen Gutscheincode WC_Cart->remove_coupon( $code ).

Um alle Coupons aus dem Warenkorb zu entfernen, würden Sie verwenden WC_Cart->remove_coupons( $type )$type standardmäßig auf null Geben Sie für alle „Warenkorb“ ein, um Gutscheine vor Steuern zu entfernen, „Bestellen“ für Gutscheine nach Steuern.

Um alle Coupons im Warenkorb als array Sie können Schleifen verwenden und optional entfernen WC_Cart->get_coupons().

foreach ( WC()->cart->get_coupons() as $code => $coupon ){
   $valid = ? // decide to remove or not
   if ( ! $valid ){
       WC()->cart->remove_coupon( $code );
   }
}

  • Das Entfernen des Gutscheins hat bei mir funktioniert, aber die ermäßigte Gesamtsumme bleibt bestehen. Wie aktualisieren Sie die Warenkorbsummen über Ajax?

    – Nickstaw

    14. November 2018 um 18:32 Uhr

  • @nickstaw Put WC()->cart->calculate_totals(); nach WC()->cart->remove_coupon( $code ); Dadurch wird die Gesamtsumme des Warenkorbs neu berechnet

    – DHL17

    24. Oktober 2019 um 10:16 Uhr


Benutzeravatar von Eric Jorgensen
Eric Jörgensen

Die Warenkorbmethode remove_coupons() wurde inzwischen so aktualisiert, dass kein Typ mehr erforderlich ist. Um nun alle Coupons zu entfernen, reicht dies aus:

WC()->cart->remove_coupons();

Weitere Informationen finden Sie in der Dokumentation zur Klasse WC_Cart hier.

  • Vielen Dank! Das kannte ich noch nicht 🙂

    – Rens Tillmann

    11. Mai 2016 um 16:47 Uhr


  • Ich habe festgestellt, dass bei der Verwendung dieser Methode zwar alle vorhandenen Coupons entfernt wurden, die auf den Einkaufswagen angewendet wurden, der Preis dann jedoch nicht neu berechnet wurde.

    – WongKongPhooey

    11. Dezember 2019 um 15:14 Uhr

  • @WongKongPhooey Ja, get_discount_total gibt altes Ergebnis zurück.

    – fdrv

    24. August um 1:08


1392040cookie-checkWie entferne ich programmgesteuert angewendete Rabattcoupons in Woocommerce?

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

Privacy policy