Obligatorischer Coupon vor dem Checkout in WooCommerce (optional: für bestimmte Produkte)

Lesezeit: 2 Minuten

Obligatorischer Coupon vor dem Checkout in WooCommerce optional fur bestimmte
VanDerPrygel

Ich möchte den Kunden zwingen, einen Gutscheincode hinzuzufügen, bevor er zur Kasse gehen kann. Ich möchte, dass es mit jedem Gutscheincode und jedem Produkt in meinem WooCommerce-Shop funktioniert.

Ich verwende diesen Code und er löst das Problem fast, aber er funktioniert nur mit einem einzigen Gutscheincode (freev1)

Wie ist es möglich, dass es bei jedem generierten Gutscheincode funktioniert?

add_action( 'woocommerce_check_cart_items', 'mandatory_coupon_code' );
function mandatory_coupon_code() {
    // HERE set your coupon code
    $mandatory_coupon = 'freev1';

    $applied_coupons = WC()->cart->get_applied_coupons();

    // If coupon is found we exit
    if( in_array( $mandatory_coupon, $applied_coupons ) ) return;

    // Not found: display an error notice
    wc_add_notice( __( 'Add coupon before checkout.', 'woocommerce' ), 'error' );
}

1647347346 666 Obligatorischer Coupon vor dem Checkout in WooCommerce optional fur bestimmte
7uc1f3r

Einfach prüfen ob $applied_coupons ist leer, wenn leer, fügen Sie eine Notiz hinzu. Entfernen $mandatory_coupon & if ( in_array...

Sie erhalten also:

function action_woocommerce_check_cart_items() {
    // Isset
    if ( WC()->cart ) {
        // Get applied coupons
        $applied_coupons = WC()->cart->get_applied_coupons();

        // When empty
        if ( empty ( $applied_coupons ) ) {
            // Not found: display an error notice
            wc_add_notice( __( 'Add coupon before checkout.', 'woocommerce' ), 'error' );   
        }
    }
}
add_action( 'woocommerce_check_cart_items', 'action_woocommerce_check_cart_items', 10 );

Aktualisieren:

Um dies für bestimmte Produkte im Warenkorb anzuwenden, verwenden Sie:

function action_woocommerce_check_cart_items() {
    // The targeted product ids
    $targeted_ids = array( 30, 815 );

    // Flag
    $found = false;
    
    // Isset
    if ( WC()->cart ) {
        // Get applied coupons
        $applied_coupons = WC()->cart->get_applied_coupons();

        // When empty
        if ( empty ( $applied_coupons ) ) {
            // Loop through cart items
            foreach ( WC()->cart->get_cart() as $cart_item ) {
                if ( array_intersect( $targeted_ids, array( $cart_item['product_id'], $cart_item['variation_id'] ) ) ) {
                    $found = true;
                    break;
                }
            }
        }
    }
    
    // True
    if ( $found ) {
        // Not found: display an error notice
        wc_add_notice( __( 'Add coupon before checkout.', 'woocommerce' ), 'error' );
    }
}
add_action( 'woocommerce_check_cart_items', 'action_woocommerce_check_cart_items', 10 );

Zusatzfrage:

“Wird es möglich sein, fast denselben Code zu verwenden, aber stattdessen von der Checkout-Seite aus zu funktionieren und die Verwendung eines Gutscheins zu erzwingen, bevor eine Bestellung aufgegeben wird?”

Könntest du ersetzen woocommerce_check_cart_items mit dem
woocommerce_checkout_process Hook für die Checkout-Seite

1004350cookie-checkObligatorischer Coupon vor dem Checkout in WooCommerce (optional: für bestimmte Produkte)

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

Privacy policy