Zablokuj dodawanie produktu do koszyka jeśli już znajduje się w nim produkt o określonym ID

Ten kod PHP, specyficzny dla WooCommerce, wprowadza walidację podczas dodawania produktów do koszyka. Przedstawia on zasady dotyczące określonego produktu (o identyfikatorze „123” / oczywiście zmieniamy ID na własne), który blokuje dodawanie innych produktów do koszyka, jeżeli jest już w nim umieszczony.

function check_cart_items($valid, $product_id, $quantity) {
    global $woocommerce;
    
    // Identyfikator produktu, który ma blokować dodawanie innych produktów
    $blocking_product_id = 123;
    
    if ($product_id != $blocking_product_id) {
        foreach ($woocommerce->cart->get_cart() as $cart_item_key => $values) {
            $_product = $values['data'];
            
            // Jeżeli produkt blokujący jest już w koszyku, nie pozwól na dodanie innych produktów
            if ($_product->get_id() == $blocking_product_id) {
                wc_add_notice(__('Masz w koszyku cały kurs, nie musisz dodawać pojedynczej części!', 'woocommerce'), 'error');
                return false;
            }
        }
    }

    return $valid;
}

add_filter('woocommerce_add_to_cart_validation', 'check_cart_items', 10, 3);

Oto szczegółowy opis:

Funkcja check_cart_items($valid, $product_id, $quantity) jest definiowana z trzema parametrami – $valid (które mówi, czy produkt może zostać dodany do koszyka), $product_id (identyfikator produktu, który użytkownik próbuje dodać do koszyka) i $quantity (ilość produktu, którą użytkownik próbuje dodać).

Za pomocą globalnej zmiennej $woocommerce, funkcja uzyskuje dostęp do danych koszyka.

Zmienna $blocking_product_id jest ustawiana na 123, co oznacza, że produkt o identyfikatorze 123 będzie blokował dodawanie innych produktów do koszyka.

Kod sprawdza, czy identyfikator produktu, który użytkownik próbuje dodać, różni się od identyfikatora produktu blokującego. Jeżeli tak, wówczas przebiega pętlę po wszystkich produktach w koszyku.

W każdej iteracji pętli, kod sprawdza, czy produkt blokujący (o identyfikatorze 123) jest już w koszyku. Jeżeli tak, wyświetla powiadomienie błędu z informacją, że nie można dodać więcej produktów, ponieważ produkt blokujący jest już w koszyku. W takim przypadku, funkcja zwraca false, co oznacza, że dodanie nowego produktu do koszyka jest nieudane.

Jeżeli żaden z warunków nie jest spełniony, funkcja zwraca wartość $valid, która może być true (jeśli można dodać produkt do koszyka) lub false (jeśli nie można).

Na koniec, funkcja check_cart_items jest dodawana jako filtr do zdarzenia ’woocommerce_add_to_cart_validation’, które jest wywoływane podczas próby dodania produktu do koszyka.

Podsumowując, ten kod uniemożliwia dodawanie innych produktów do koszyka, jeżeli w koszyku jest już określony produkt (o identyfikatorze 123).

Pamiętaj! Zmień ID produktu na swoje własne jak i komunikat, który ma się pojawiać.

Nie znalazłeś funkcji, która Cię interesuje?
Napisz do mnie.

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Imię:


Nazwisko:


Adres email:


Nazwa Twojej firmy:


NIP Twojej firmy

REGON Twojej firmy



Adres Twojej firmy

Ulica

Kod pocztowy

Miasto

Wybierz bramkę płatniczą na Twojej stronie