Jak programowo zaktualizować cenę produktu w WooCommerce

Opublikowany: 2020-10-10

Chcesz dowiedzieć się, jak programowo aktualizować cenę produktu w WooCommerce ? W tym przewodniku pokażemy, jak zmienić ceny w WooCommerce bez używania wtyczek lub instalowania dodatkowego narzędzia.

Jeśli korzystasz z nich mądrze, rabaty mogą pomóc Ci poprawić współczynniki konwersji i zwiększyć sprzedaż. Istnieje kilka sposobów na wprowadzenie rabatów w Twoim sklepie e-commerce. Na przykład możesz programowo stosować kupony WooCommerce.

Możesz jednak również zaktualizować cenę produktu bez korzystania z kuponów . Na przykład możesz udzielić ekskluzywnej zniżki użytkownikom, którzy subskrybują Twój biuletyn lub wydali w Twoim sklepie więcej niż 100 USD.

W tym przewodniku dowiesz się, jak zmieniać cenę, gdy klienci dodają produkt do koszyka bez korzystania z żadnych kuponów i poprzez bezpośredni dostęp do obiektu koszyka WooCommerce. Przyjrzymy się kilku przykładom i zastosujemy logikę podczas aktualizowania ceny. Celem jest zrozumienie logiki, dzięki czemu możesz dostosować skrypty i zastosować je w swoim sklepie.

Jak programowo zaktualizować cenę produktu w WooCommerce

W tej sekcji dowiesz się, jak programowo aktualizować cenę produktu w WooCommerce . Przyjrzymy się różnym przykładom, aby przedstawić kilka pomysłów na to, co możesz zrobić w swoim sklepie.

  1. Zaktualizuj cenę produktu po zaznaczeniu pola wyboru
    1. Dodaj pole wejściowe pola wyboru do strony produktów
    2. Zaktualizuj cenę, gdy użytkownik doda produkt do koszyka
    3. Przelicz całkowitą cenę koszyka
  2. Edytuj cenę produktu w oparciu o role użytkowników
  3. Zaktualizuj cenę produktu na podstawie taksonomii produktu

Pamiętaj, że użyjemy kilku haczyków WooCommerce, więc dobrym pomysłem jest zapoznanie się z tym przewodnikiem, jeśli ich nie znasz.

Zanim zaczniemy…

Zanim zaczniemy, ponieważ wprowadzimy modyfikacje niektórych podstawowych plików, zalecamy zainstalowanie motywu potomnego na swojej stronie. Jeśli nie masz motywu potomnego i nie wiesz, jak go zainstalować, zapoznaj się z naszym przewodnikiem tworzenia motywu potomnego lub naszą listą najlepszych wtyczek motywów potomnych.

UWAGA : Aby zastosować te skrypty, skopiuj je i wklej do pliku functions.php motywu potomnego. Należy jednak pamiętać, że są one przeznaczone wyłącznie do celów dydaktycznych, więc dostosuj je przed wprowadzeniem ich do produkcji.

1) Zaktualizuj cenę produktu po zaznaczeniu pola wyboru

W poniższym przykładowym skrypcie dodamy pole wyboru w formularzu koszyka na stronie produktu . W ten sposób możemy zastosować niestandardową logikę i dynamicznie aktualizować cenę dowolnego produktu, który klienci dodają do koszyka tylko po zaznaczeniu checkboxa. Jak programowo zaktualizować cenę produktu w WooCommerce

1.1 Dodaj pole wyboru pola wyboru do strony produktów

Zanim programowo zaktualizujemy cenę produktu WooCommerce, dodajmy pole wyboru do strony produktów . Aby to zrobić, po prostu skopiuj i wklej następujący skrypt:

 add_action('woocommerce_after_add_to_cart_button', 'add_check_box_to_product_page', 30 );
funkcja add_check_box_to_product_page(){ ?>     
       <div>           
<label for="extra_pack"> <?php _e( 'Dodatkowe opakowanie', 'Poczwórne warstwy' ); ?>
<input type="pole wyboru" name="extra_pack" value="extra_pack"> 
</label>
                    
</div>
     <?php
}

Hak woocommerce_after_add_to_cart_button pozwala nam wydrukować pole wyboru zaraz za przyciskiem, jak pokazano na powyższym obrazku.

1.2 Zaktualizuj cenę, gdy użytkownik doda produkt do koszyka

Inną ciekawą opcją jest dynamiczna aktualizacja ceny, gdy klienci dodają produkt do koszyka . W takim przypadku, aby programowo zaktualizować cenę w WooCommerce, wystarczy wkleić ten skrypt zaraz po poprzednim.

 add_filter( 'woocommerce_add_cart_item_data', 'add_cart_item_data', 10, 3 );
 
funkcja add_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
     // pobierz identyfikator produktu i cenę
    $produkt = wc_get_product( $product_id );
    $cena = $produkt->get_price();
    // pole wyboru dodatkowej paczki
    if( ! pusty( $_POST['dodatkowy_pakiet'] ) ) {
       
        $cart_item_data['new_price'] = $cena + 15;
    }
zwróć $cart_item_data;
}

woocommerce_add_cart_item_data to hook WooCommerce, który pozwoli nam edytować cenę aktualnego produktu. Dodatkowo warunek warunkowy if() sprawdza, czy pole wyboru jest zaznaczone, czy nie, a jeśli tak, aktualizuje cenę w następnym wierszu. Teraz podzielmy kod, aby lepiej zrozumieć, co robi każda część.

  • extra_pack to nazwa pola wyboru, które stworzyliśmy w poprzednim kroku
  • $price to aktualna cena produktu. Możemy go dowolnie modyfikować pod pewnymi warunkami
  • $cart_item_data['new_price'] = $price + 15; w ten sposób zwiększamy cenę o 15 USD, gdy warunek if() jest prawdziwy, czyli wtedy, gdy użytkownik zaznacza pole wyboru dodatkowego opakowania. Dostosowując kod, możesz zwiększyć lub zmniejszyć cenę o dowolną kwotę.

1.3 Przelicz całkowitą cenę koszyka

Ponieważ możemy wywołać hak woocommerce_add_cart_item_data kilka razy podczas ładowania koszyka, musimy ponownie obliczyć sumy i sumy częściowe koszyka , aby uniknąć niepożądanych wyników, takich jak wielokrotne aktualizowanie cen lub za każdym razem, gdy użytkownik dodaje produkt. Aby zaktualizować produkt, wklej następujący kod po dwóch poprzednich:

 add_action( 'woocommerce_before_calculate_totals', 'before_calculate_totals', 10, 1 );
 
function before_calculate_totals( $cart_obj ) {
if ( is_admin() && ! define( 'DOING_AJAX' ) ) {
powrót;
}
// Przejdź przez każdy element koszyka
foreach( $cart_obj->get_cart() as $key=>$value ) {
if( isset( $value['nowa_cena'] ) ) {
$cena = $wartość['nowa_cena'];
$value['data']->set_price( ( $cena ) );
}
}
}

Ta funkcja zapewnia, że ​​aktualizujemy cenę tylko wtedy, gdy produkt pasuje do naszej logiki warunkowej (że użytkownik zaznacza pole wyboru dodatkowego opakowania). W ten sposób zapobiegamy wszelkim możliwym błędom przy obliczaniu całkowitej ceny koszyka. Aktualizuj programowo cenę produktu w WooCommerce - Dodatkowa opłata

Cena produktu wzrasta o 15 $

Jeśli wszystko poszło dobrze, a koszyk spełnia określone przez nas warunki, nasza funkcja doda dodatkową opłatę w wysokości 15 USD do pierwotnej ceny, gdy użytkownik zaznaczy pole wyboru na stronie produktu, przed kliknięciem przycisku Dodaj do koszyka.

Aby uniknąć porzucania koszyka i poprawić jakość zakupów, zawsze powinieneś wyświetlać nową cenę, zanim klienci dodadzą produkty do swoich koszyków . W przeciwnym razie zobaczą tylko ostateczną cenę na stronie kasy.

2. Edytuj cenę produktu na podstawie ról użytkownika

Podobnie możemy aktualizować cenę produktu WooCommerce programowo na podstawie ról użytkowników . Na przykład możesz dać subskrybowanym lub zarejestrowanym użytkownikom ekskluzywną zniżkę. Aby to zrobić, skopiuj i wklej następujący skrypt:

 funkcja add_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
    // pobierz identyfikator produktu i cenę
   $produkt = wc_get_product( $product_id );
   $cena = $produkt->get_price();
   if(// Jest zalogowany && jest rolą klienta
       is_user_logged_in()==true&& wc_current_user_has_role( 'klient' )){
       
        $cart_item_data['nowa_cena'] = $cena * 0,8;
   }
zwróć $cart_item_data;
}
add_filter( 'woocommerce_add_cart_item_data', 'add_cart_item_data', 10, 3 );

Jak widać, jedyną różnicą między tym skryptem a poprzednim w punkcie 1.2 jest operator logiczny if() . Tutaj sprawdzamy, czy użytkownik jest zalogowany, czy nie i czy ma rolę klienta, którą przypisujemy zarejestrowanym użytkownikom, którzy wcześniej dokonywali zakupów w naszym sklepie.

Gdy kupujący spełnia ten warunek, mnożymy cenę produktu przez 0,8 , dając mu 20% rabatu. Oczywiście możesz edytować role użytkownika i zmieniać je dla innych, takich jak subskrybent, redaktor lub inne role, które zarejestrowałeś w swojej witrynie.

Pamiętaj, że do poprawnego działania musisz również użyć funkcji 'before_calculate_totals' i jej zaczepu, aby ponownie obliczyć sumy koszyka. Więc po prostu użyj polecenia przelicz całkowitą cenę skryptu koszyka, który widzieliśmy w kroku 1.3.

3. Zaktualizuj cenę produktu na podstawie taksonomii produktu

Wreszcie w WooCommerce możemy również dynamicznie aktualizować cenę produktu programowo na podstawie taksonomii produktów . Aby to zrobić, spójrzmy na poniższy skrypt.

 add_filter( 'woocommerce_add_cart_item_data', 'add_cart_item_data', 10, 3 );
 
funkcja add_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
     // pobierz identyfikator produktu i cenę
    $produkt = wc_get_product( $product_id );
    $cena = $produkt->get_price();
    $terms = get_the_terms( $product_id, 'product_cat' );
    // Dopasowanie kategorii ! zastosuj zniżkę
    if($terms[0]->name=='Plakaty'){                    
        $cart_item_data['new_price'] = $cena + 20;
     }   
zwróć $cart_item_data;
 
}

W tym przykładzie otrzymujemy kategorię produktu, który został dodany do koszyka za pomocą wbudowanej funkcji WordPress get_the_terms() . W następnym wierszu stosujemy nasz warunek, aby pobrać kategorię produktu za pomocą $terms[0]->name . W ten sposób, jeśli produkt należy do kategorii Plakaty, zwiększamy cenę o 20 zł.

To jest przykładowy skrypt, który możesz wziąć za podstawę i edytować, aby zmienić zarówno taksonomię, jak i kwotę, którą chcesz dodać lub odjąć od ceny.

Na koniec pamiętaj, że musisz użyć funkcji 'before_calculate_totals' i odpowiadającego jej haka, tak jak zrobiliśmy to w kroku 1.3.


Jak widać, umiejętność korzystania z funkcji warunkowych i funkcji WordPress/WooCommerce zapewni niezwykle elastyczny sposób na programową aktualizację cen produktów. To tylko kilka przykładów, które dadzą Ci pomysły na to, co jest możliwe.

Jednak możesz zrobić o wiele więcej, uwolnij swoją kreatywność i znajdź nowe sposoby na edycję cen swoich produktów. Możesz na przykład zastosować rabaty na określone identyfikatory produktów na podstawie adresu URL, z którego pochodzą użytkownicy, w zależności od lokalizacji lub identyfikatora użytkownika i tak dalej. Możliwości są nieograniczone, więc pobaw się skryptem i znajdź najlepsze rozwiązania dla swojego sklepu.

UWAGI KOŃCOWE

  • Te przykładowe skrypty w punktach 1, 2 i 3 nie będą działać razem. Będziesz musiał dopracować swoją logikę do jednej, jeśli chcesz zastosować wiele funkcji jednocześnie
  • W przypadku bardziej złożonej logiki warunkowej może być konieczne dodanie dodatkowych funkcji walidacji
  • Zawsze stosuj funkcję przeliczania – jak widać w punkcie 1.3 – podczas pracy z obiektem koszyka WooCommerce
  • Są to przykładowe skrypty i przeznaczone są wyłącznie do celów dydaktycznych. Dostosuj je przed wprowadzeniem do produkcji

Wniosek

Podsumowując, nauka programowego aktualizowania ceny produktu w WooCommerce może dać Ci dużą elastyczność. Możesz udzielać rabatów subskrybowanym użytkownikom, dodawać opłaty, jeśli klienci chcą dodatkowego opakowania lub szybkiej dostawy i tak dalej. A najlepsze jest to, że nie musisz instalować żadnych wtyczek, aby to zrobić.

W tym przewodniku widzieliśmy różne przykłady dynamicznej, programowej zmiany ceny. To jednak tylko wierzchołek góry lodowej. WooCommerce zapewnia nieskończone możliwości, dlatego zalecamy zabawę i dostosowanie skryptów.

Jeśli masz jakieś pytania dotyczące skryptów, daj nam znać w komentarzach poniżej. Chętnie Ci pomożemy.

Na koniec, jeśli chcesz ulepszyć proces realizacji transakcji, zapoznaj się z naszym przewodnikiem, aby zoptymalizować proces realizacji transakcji.