Jak oferować rabaty na podstawie ilości w WooCommerce

Opublikowany: 2020-01-27

Zazwyczaj jako właściciel sklepu możesz czasami chcieć oferować zniżki, jeśli klienci kupują więcej niż jedną ilość określonego produktu. Może to mieć na celu zwiększenie sprzedaży lub zakończenie nadmiernych zapasów. W tym poście dowiesz się, jak oferować rabaty na podstawie ilości w WooCommerce za pomocą zarówno fragmentów kodu, jak i wtyczek.

Jak oferować rabaty na podstawie ilości w WooCommerce za pomocą Code Snippets

Zobaczmy, jak w tym celu użyć fragmentu kodu. Dzięki temu fragmentowi kodu oferujemy klientom rabat w wysokości 5%, jeśli kupią więcej niż 2 ilości tego samego produktu.

Aby to zrobić, musisz dodać poniższy kod do pliku functions.php motywu potomnego:

 add_filter('woocommerce_add_cart_item_data', 'ts_add_default_price_as_custom', 20, 3 );

funkcja ts_add_default_price_as_custom( $cart_item_data, $product_id, $variation_id ){

    $product_id = $variation_id > 0 ? $variation_id : $product_id;

    ## ----- USTAW ZNIŻKĘ TUTAJ ----- ##
    $rabat_procent = 5; // Rabat (5%)

    // Obiekt WC_Product
    $produkt = wc_get_product($product_id);

    $cena = (zmiennoprzecinkowa) $produkt->get_price();

    // Ustaw domyślną cenę podstawową produktu jako niestandardowe dane pozycji koszyka
    $cart_item_data['base_price'] = $cena;

    // Ustaw obniżoną cenę produktu jako niestandardowe dane pozycji koszyka
    $cart_item_data['new_price'] = $cena * (100 - $discount_percentage) / 100;

    // Ustaw procent jako dane pozycji koszyka niestandardowych
    $cart_item_data['percentage'] = $discount_percentage;

    zwróć $cart_item_data;
}

// Wyświetl oryginalną cenę produktu
add_filter('woocommerce_cart_item_price', 'ts_display_cart_items_default_price', 20, 3 );

funkcja ts_display_cart_items_default_price( $product_price, $cart_item, $cart_item_key ){
    if( isset($cart_item['base_price']) ) {
        $produkt = $cart_item['data'];
        $product_price = wc_price( wc_get_price_to_display( $produkt, array( 'price' => $cart_item['base_price']) ) );
    }
    zwróć $cena_produktu;
}

// Wyświetl nazwę produktu z procentem rabatu
add_filter( 'woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 );
funkcja ts_add_percentage_to_item_name( $product_name, $cart_item, $cart_item_key ){
    if( isset($cart_item['percentage']) && isset($cart_item['base_price']) ) {
        if( $cart_item['data']->get_price() != $cart_item['base_price'])
            $product_name .= ' <em>(' . $cart_item['percentage'] . '% zniżki)</em>';
    }
    zwróć $nazwa_produktu;
}

add_action( 'woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1 );
funkcja ts_custom_discounted_cart_item_price ( $ koszyk ) {
    if ( is_admin() && !defined( 'DOING_AJAX' ))
        zwrócić;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        zwrócić;

    ## ----- USTAW ILOŚĆ TUTAJ ----- ##
    $docelowa_ilość = 2; // Docelowa ilość

    // Przejdź przez elementy koszyka
    foreach ( $cart->get_cart() as $cart_item ) {

        // Dla ilości sztuk 2 lub więcej
        if( $cart_item['quantity'] >= $targeted_qty && isset($cart_item['new_price']) ){

            // Ustaw obniżoną cenę przedmiotu w koszyku
            $cart_item['data']->set_price($cart_item['new_price']);
        }
    }
}

Powyższy kod doda rabat w wysokości 5%, jeśli ilość produktu przekroczy 2. Możesz to zmienić zgodnie z własnymi wymaganiami, zmieniając zmienną $discount_percentage , aby ustawić żądany rabat, oraz $targeted_qty , aby ustawić ilość, powyżej której chcesz zastosować zniżkę.

offer discounts based on quantity in WooCommerce - Updated Cart contents

Teraz będziesz mógł zobaczyć obniżoną cenę, jeśli dodasz do koszyka 2 lub więcej ilości tego samego produktu.

W powyższym kodzie użyliśmy czterech głównych haczyków:

woocommerce_add_cart_item_data : Ten hak filtra służy do zmiany zawartości / metadanych koszyka.
woocommerce_cart_item_price : Ten hak filtra służy do zmiany sposobu wyświetlania cen w koszyku.
woocommerce_cart_item_name : Ten zaczep filtra może służyć do zmiany nazwy produktu w koszyku. W naszym przykładzie używamy go, aby dołączyć procent rabatu do nazwy produktu.
woocommerce_before_calculate_totals : Ten hak akcji służy do zastąpienia ceny produktu w koszyku.

Jak oferować rabaty na podstawie ilości tylko dla przedmiotów, które NIE są w sprzedaży:

Jeśli chcesz ograniczyć to tylko do tych produktów, które nie są w sprzedaży, po prostu musisz edytować powyższy fragment kodu, aby dodać warunek wewnątrz funkcji, która jest dodawana do haka woocommerce_add_cart_item_data:

 add_filter('woocommerce_add_cart_item_data', 'ts_add_default_price_as_custom', 20, 3 );
funkcja ts_add_default_price_as_custom( $cart_item_data, $product_id, $variation_id ){
    $product_id = $variation_id > 0 ? $variation_id : $product_id;

    ## ----- USTAW ZNIŻKĘ TUTAJ ----- ##
    $rabat_procent = 5; // Rabat (5%)

    // Obiekt WC_Product
    $produkt = wc_get_product($product_id);

    // DODAJ WARUNEK TUTAJ, aby zaoferować ZNIŻKĘ TYLKO na produkty nieobjęte sprzedażą
    if( ! $produkt->jest_na_wyprzedaży() ){
        $cena = (zmiennoprzecinkowa) $produkt->get_price();

        // Ustaw domyślną cenę podstawową produktu jako niestandardowe dane pozycji koszyka
        $cart_item_data['base_price'] = $cena;

        // Ustaw obniżoną cenę produktu jako niestandardowe dane pozycji koszyka
        $cart_item_data['new_price'] = $cena * (100 - $discount_percentage) / 100;

        // Ustaw procent jako dane pozycji koszyka niestandardowych
        $cart_item_data['percentage'] = $discount_percentage;
    }

    zwróć $cart_item_data;
}

// Wyświetl oryginalną cenę produktu
add_filter('woocommerce_cart_item_price', 'ts_display_cart_items_default_price', 20, 3 );
funkcja ts_display_cart_items_default_price( $product_price, $cart_item, $cart_item_key ){
    if( isset($cart_item['base_price']) ) {
        $produkt = $cart_item['data'];
        $product_price = wc_price( wc_get_price_to_display( $produkt, array( 'price' => $cart_item['base_price']) ) );
    }
    zwróć $cena_produktu;
}

// Wyświetl nazwę produktu z procentem rabatu
add_filter( 'woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 );
funkcja ts_add_percentage_to_item_name( $product_name, $cart_item, $cart_item_key ){
    if( isset($cart_item['percentage']) && isset($cart_item['base_price']) ) {
        if( $cart_item['data']->get_price() != $cart_item['base_price'])
            $product_name .= ' <em>(' . $cart_item['percentage'] . '% zniżki)</em>';
    }
    zwróć $nazwa_produktu;
}

add_action( 'woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1 );
funkcja ts_custom_discounted_cart_item_price ( $ koszyk ) {
    if ( is_admin() && !defined( 'DOING_AJAX' ))
        zwrócić;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        zwrócić;

    ## ----- USTAW ILOŚĆ TUTAJ ----- ##
    $docelowa_ilość = 2; // Docelowa ilość

    // Przejdź przez elementy koszyka
    foreach ( $cart->get_cart() as $cart_item ) {

        // Dla ilości sztuk 2 lub więcej
        if( $cart_item['quantity'] >= $targeted_qty && isset($cart_item['new_price']) ){

            // Ustaw obniżoną cenę przedmiotu w koszyku
            $cart_item['data']->set_price($cart_item['new_price']);
        }
    }
} 

W ten sposób możesz oferować rabaty na podstawie ilości za pomocą fragmentów kodu dla produktów niesprzedażowych, wyprzedaży lub wszystkich produktów, tj. W całym sklepie, podając odpowiedni warunek w funkcji, która jest dodawana do haka filtra woocommerce_add_cart_item_data .

Jak oferować rabaty na podstawie ilości w WooCommerce za pomocą wtyczek

Jeśli nie czujesz się komfortowo z dodawaniem fragmentu kodu do plików witryny, możesz również użyć wtyczek:

  1. Zasady rabatów dla WooCommerce : Jest to darmowa wtyczka, która pozwala dodawać rabaty procentowe nie tylko na podstawie ilości produktów, ale także jeśli Twoi klienci przekroczą określony limit cenowy. Możesz również dodać rabaty procentowe na określoną liczbę artykułów (niekoniecznie tego samego produktu). Wersja PRO tej wtyczki umożliwia dodawanie zniżek dla całej kategorii, ofert BOGO (Kup jeden, dostaniesz jeden za darmo), zniżkę ze stałej ceny zamiast zniżek procentowych i nie tylko.
  2. Warunkowe rabaty dla WooCommerce: To kolejna wtyczka, która oferuje prawie wszystkie ważne funkcje w swojej bezpłatnej wersji - Możesz dodawać rabaty na podstawie ilości, liczby pozycji w koszyku, dla określonych kategorii, określonych produktów, zmiennych funkcji (niebieska koszula, rozmiar Medium itp.), dla określonych ról w sklepie lub nawet określonych klientów. Jego wersja PRO ma kilka dodatkowych funkcji, z których jedną jest bezpłatne dodanie produktu do koszyka przy zakupie określonego produktu.
  3. Inteligentne kupony: Oprócz kart podarunkowych, kredytów sklepowych, kuponów URL i zaawansowanych ograniczeń, możesz również ograniczyć kupon na podstawie liczby określonych produktów w koszyku (przykład – 10 koszul), a także łącznej ilości produktów wielu produktów w koszyk (przykład – 5 koszul + 2 spodnie + 3 paski).

W ten sposób możesz używać fragmentów kodu lub wtyczek, aby oferować rabaty swoim klientom na podstawie ilości produktów.