Automatisches Anwenden / Entfernen eines Gutscheincodes basierend auf Einkaufswagenartikeln in Woocommerce

Lesezeit: 2 Minuten

Benutzer-Avatar
mdkamrul

Ich wollte einen Gutscheincode auf den Warenkorb anwenden, wenn der Warenkorb mindestens 2 Artikel enthält. Wenn nicht, dann wird der Gutschein nicht angewendet und eine Änderungsnachricht angezeigt. Wenn Sie ihn angewendet haben, wird eine Erfolgsmeldung angezeigt. Hier ist mein Code, den ich versucht habe, funktioniert nicht so, wie ich es möchte

add_action( 'woocommerce_before_calculate_totals','conditionally_auto_add_coupon', 30, 1 );

function conditionally_auto_add_coupon( $cart ) {

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

    // HERE set the coupon code (in lowercase)
    $coupon_code="mycode";

    $total_item = 0;

    if (WC()->cart->has_discount('mycode')) {

        foreach( $cart->get_cart() as $cart_item ){
          $total_item++;
        }
        if($total_item < 2){
            $cart->remove_coupon( $coupon_code );

            wc_add_notice( __('you have only 1 item in cart'), 'alert');
        }
        else{
            $cart->add_discount( $coupon_code );

            wc_add_notice( __('coupon added'), 'notice');
        }
    }
}

Jede Hilfe ist willkommen.

Benutzer-Avatar
LoicTheAztec

Versuche Folgendes:

add_action( 'woocommerce_before_calculate_totals', 'auto_apply_coupon_conditionally', 10, 1 );
function auto_apply_coupon_conditionally( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

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

    $coupon_code="summer"; // HERE set the coupon code (in lowercase)
    $applied     = in_array( $coupon_code, $cart->get_applied_coupons() ) ? true : false;
    $item_count  = sizeof( $cart->get_cart() );
    $total_item  = 0;

    // Remove coupon
    if ( $item_count < 2 && $applied ) {
        $cart->remove_coupon( $coupon_code );
        wc_clear_notices();
        wc_add_notice( __('You have only 1 item in cart'), 'error');
    }
    // Add coupon
    elseif ( $item_count >= 2 && ! $applied ) {
        $cart->apply_coupon( $coupon_code );
        wc_clear_notices();
        wc_add_notice( __('A coupon has been added'), 'notice' );
    }
}

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

  • danke für den Code, aber das Problem ist, wenn ich meinen Coupon in das Coupon-Feld lege und der Einkaufswagen nur 1 Artikel enthält und der Coupon angewendet wurde und mir eine Standard-Erfolgsmeldung angezeigt wird. Kann mir sagen, was falsch ist?

    – mdkamrul

    27. März 2019 um 5:08 Uhr

  • @mdkamrul Dieser Code ist nicht dafür gemacht, manuell einen Gutschein hinzuzufügen… Er macht es alleine … Er wendet einen Gutscheincode AUTOMATISCH AN oder ENTFERNT ihn AUTOMATISCH. (Ich habe den Haken wieder auf geändert woocommerce_before_calculate_totals)… Bei mir funktioniert der Code auf meinem Testserver einwandfrei.

    – LoicTheAztec

    27. März 2019 um 5:21 Uhr


  • Entschuldigung für das Missverständnis. Aber ich brauche manuell eigentlich nicht automatisch. kannst du bitte eine Lösung dafür geben?

    – mdkamrul

    27. März 2019 um 5:36 Uhr

  • Eigentlich war dies für die manuelle Couponanwendung nicht automatisch. Außerdem habe ich die Aktion geändert, wie Sie sagten woocommerce_before_calculate_totals, aber keine Änderung, dies funktioniert wie zuvor. kannst du bitte deinen Code ändern?

    – mdkamrul

    27. März 2019 um 6:20 Uhr


Bitte verwende “Intelligenter Gutschein für Woocommerce” Plugin, das die Auto-Coupon-Funktionalität implementiert,

Bitte beziehen Sie sich darauf Code im SVN-Repo.

1229140cookie-checkAutomatisches Anwenden / Entfernen eines Gutscheincodes basierend auf Einkaufswagenartikeln in Woocommerce

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

Privacy policy