Wenden Sie automatisch einen Gutschein an, der auf der Anzahl bestimmter Einkaufswagenartikel in Woocommerce basiert

Lesezeit: 2 Minuten

Wenden Sie automatisch einen Gutschein an der auf der Anzahl
Giuls

Ich versuche, automatisch einen Gutschein auszulösen, der speziell dann im Warenkorb angewendet wird, wenn sich 4 Artikel im Warenkorb befinden.

Der Coupon wird im Woocommerce-Backend der Website vorab erstellt “Schnupperbox”

Ich verwende eine geänderte Version dieses Antwortcodes:
Fügen Sie den WooCommerce-Gutscheincode automatisch basierend auf den Produktkategorien hinzu

Hier ist meine Codeversion:

add_action( 'woocommerce_before_calculate_totals', 'wc_auto_add_coupons', 10, 1 );
function wc_auto_add_coupons( $cart_object ) {

    // Coupon code
    $coupon = 'tasterbox';

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

    // Initialising variables
    $is_match = false;
    $taster_item_count = 4;

    //  Iterating through each cart item
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        // If cart items match 4
        if( $cart->cart_contents_count == $taster_item_count ){
            $is_match = true; // Set to true
            break; // stop the loop
        }
    }

    // If conditions are matched add the coupon discount
    if( $is_match && ! $cart_object->has_discount( $coupon )){
        // Apply the coupon code
        $cart_object->add_discount( $coupon );

        // Optionally display a message 
        wc_add_notice( __('TASTER BOX ADDED'), 'notice');
    } 
    // If conditions are not matched and coupon has been appied
    elseif( ! $has_category && $cart_object->has_discount( $coupon )){
        // Remove the coupon code
        $cart_object->remove_coupon( $coupon );

        // Optionally display a message 
        wc_add_notice( __('SORRY, TASTERBOX NOT VALID'), 'alert');
    }
}

Allerdings kann ich den Gutschein nicht automatisch anwenden, wenn sich 4 Artikel im Warenkorb befinden. Es scheint etwas Einfaches zu sein, aber ich stecke fest.

Jede Hilfe geschätzt.

Es gibt einige kleine Fehler und Fehler in Ihrem Code. Versuchen Sie stattdessen Folgendes:

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

    // Setting and initialising variables
    $coupon = 'tasterbox'; // <===  Coupon code
    $item_count = 4; // <===  <===  Number of items
    $matched    = false;

    if( $cart->cart_contents_count >= $item_count ){
        $matched = true; // Set to true
    }

    // If conditions are matched add coupon is not applied
    if( $matched && ! $cart->has_discount( $coupon )){
        // Apply the coupon code
        $cart->add_discount( $coupon );

        // Optionally display a message
        wc_add_notice( __('TASTER BOX ADDED'), 'notice');
    }
    // If conditions are not matched and coupon has been appied
    elseif( ! $matched && $cart->has_discount( $coupon )){
        // Remove the coupon code
        $cart->remove_coupon( $coupon );

        // Optionally display a message
        wc_add_notice( __('SORRY, TASTERBOX NOT VALID'), 'error');
    }
}

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

  • Danke! Ich sehe die Fehler jetzt. Funktioniert perfekt. Dies könnte eine andere Frage sein, aber wissen Sie, ob es möglich ist, den Standard-Woocommerce auszublenden coupon_applied_successfully Benachrichtigung nur für diesen automatisch angewendeten Gutschein?

    – Giuls

    17. September 2018 um 8:09 Uhr

924330cookie-checkWenden Sie automatisch einen Gutschein an, der auf der Anzahl bestimmter Einkaufswagenartikel in Woocommerce basiert

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

Privacy policy