✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Przewodnik po tym, jak dodać niestandardowe opłaty do WooCommerce Checkout za pomocą kodu

14

W niektórych przypadkach konieczne może być dodanie opłaty do sumy koszyka. Czasami tylko wtedy, gdy spełniony jest określony warunek, na przykład w zależności od sum koszyka lub miejsca wysyłki. Dzięki WooCommerce dodanie opłaty jest dość łatwe – o wiele łatwiejsze niż w rzeczywistości dodanie rabatu. W tym poście dowiemy się, jak dodać niestandardową opłatę do WooCommerce.

WooCommerce ma wbudowaną funkcję w obiekcie koszyka do dodawania opłat. Wszystko, czego potrzebujesz, to podpiąć się pod właściwą akcję i za pomocą dostarczonego obiektu koszyka wywołać funkcję, aby dodać opłatę. WooCommerce automatycznie wyświetli opłaty w koszyku i sumach kasowych. Ty decydujesz o etykiecie i wysokości opłaty.

Przewodnik po tym, jak dodać niestandardowe opłaty do WooCommerce Checkout za pomocą kodu

Należy pamiętać, że kwota opłaty nie może być ujemna – co daje klientowi rabat. Ten „hack" działał wcześniej w starszych wersjach WooCommerce, ale już nie.

Przejdźmy do szczegółów kodu! Jedyny haczyk, o który musisz się martwić, to woocommerce_cart_calculate_fees. Wewnątrz tego haka możesz złapać przedmiot koszyka, wywołując WC()->cart. Za pomocą tego obiektu możesz wywołać add_fee(), który akceptuje cztery parametry (prawdopodobnie potrzebujesz tylko dwóch pierwszych); add_fee($fee_name, $amount_in_float, $taxable_boolean, $tax_class_string). Pierwsze dwa są oczywiste. Trzeci parametr to wartość logiczna, która decyduje o tym, czy opłata podlega opodatkowaniu, czy nie. A czwarty to podanie klasy podatkowej opłaty (jeśli trzeci parametr jest prawdziwy). Ale może pozostać puste dla standardowej klasy podatkowej.

Dodanie stałej opłaty

Dodanie opłaty niestandardowej odbywa się w najprostszej formie:

Pierwszym krokiem jest uniemożliwienie dodawania opłaty, jeśli jesteśmy w admin lub jeśli Ajax jest w toku. Następnie wywołujemy add_fee()obiekt koszyka. Spowoduje to dodanie opłaty o nazwie „Mała opłata” o wartości 5. Wartość będzie w dowolnej walucie, którą masz w swoim sklepie. Jeśli waluta sklepu jest ustawiona na dolary, wynosi 5 dolarów. Dostosuj nazwę i ilość do swoich potrzeb.

Dodanie opłaty jako procent sumy koszyka

Jeśli chcesz, aby kwota opłaty była procentem sumy koszyka, wystarczy obliczyć ją inaczej. Pamiętaj, że zawsze mamy dostęp do obiektu koszyka przez wywołanie WC()->carti stąd możemy pobrać sumy.

Powyższy kod doda opłatę w wysokości 5% sumy koszyka, czyli sumy pozycji koszyka (get_cart_contents_total()) plus koszt wysyłki koszyka (get_shipping_total()). Dostosuj stawkę i sumy, które chcesz uwzględnić lub wykluczyć.

To całkiem miłe, ale w niektórych przypadkach możemy chcieć dostosować, kiedy dodać opłatę. Może chcesz dodać opłatę tylko za określoną metodę wysyłki, metodę płatności lub na podstawie sumy koszyka. Proces jest taki sam, po prostu doliczamy opłatę tylko wtedy, gdy spełnione są nasze warunki.

Dodanie opłaty w zależności od sum koszyka

Załóżmy, że chcesz dodać opłatę tylko wtedy, gdy sumy koszyka są poniżej określonej kwoty. Załóżmy, że chcesz dodać opłatę za obsługę małych kwot. Możesz to zrobić tak:

Użyj WC()->cart->get_cart_contents_total(), aby uzyskać liczbę zmiennoprzecinkową sumy koszyka, z wyłączeniem kosztów wysyłki. (Jeśli chcesz uwzględnić również wysyłkę, spójrz powyżej na dodanie opłaty procentowej za to, jak uzyskać sumy kosztów wysyłki). Następnie dokonaj porównań.

Możesz również odwrócić go i zdecydować się na dodanie opłaty, jeśli koszyk przekroczył pewien limit.

Dodanie opłaty w zależności od lokalizacji wysyłki

Możesz również dodać opłatę w zależności od lokalizacji wysyłki, na przykład według kraju. Podobnie jak przy pobieraniu obiektu koszyka, możemy użyć WC()->customerdo obiektu klienta. Pamiętaj, że gdy klient nie jest zalogowany i nie dotarł jeszcze do kasy i nie podał swojego adresu, wartości obiektu klienta będą puste lub wartości domyślne ustawione w Twoim sklepie.

Konieczna jest znajomość kodu kraju – oto ładne odniesienie do kodu kraju. Oto przykład dodawania opłaty, jeśli klient pochodzi z Norwegii.

Doliczanie opłaty w zależności od wybranej metody wysyłki

Uzyskanie metody wysyłki jest nieco trudniejsze, ponieważ zależy od sesji użytkownika i nie ma „ładnego, zrozumiałego formatu”. Aktualnie wybraną metodę wysyłki możesz uzyskać za pomocą WC()->session->get('chosen_shipping_methods'). Zauważ, że mówi „metody”, a nie „metoda”, więc zwraca tablicę. Zwykle tablica zawiera jeden element, przy czym każdy element składa się z ciągów identyfikatora wysyłki, dwukropka i identyfikatora po nim. Polecam używać metod napisowych PHP, aby sprawdzić, czy ciąg zawiera identyfikator – na przykład strpos()– a nie czy jest równy.

Dodanie opłaty w zależności od wybranej metody płatności

Jeśli chcesz dodać opłatę w zależności od wybranej bramki płatności, możesz pobrać aktualnie wybraną bramkę płatności WC()->session->get('chosen_payment_method')i dokonać porównania z jej nazwą (np. dla Paypal zwróciłby 'paypal'). Możesz jednak zauważyć, że gdy klient przełącza się między bramkami płatniczymi w kasie, opłata nie jest dynamicznie dodawana ani usuwana. Musisz więc dodać dodatkowy Javascript, aby zapewnić, że WooCommerce zaktualizuje koszyk, aby Twoja opłata działała konsekwentnie.

Aby dodać JavaScript, do którego się podpinamy, woocommerce_review_order_before_paymentktóry występuje tuż przed okienkiem płatności w kasie i wysyłamy skrypt wbudowany. Wszystko, co robi kod, to uruchamianie haka WooCommerce za każdym razem, update_checkoutgdy zmienia się wybór metody płatności. Gwarantuje to, że wszystkie niezbędne metody PHP i hooki są uruchamiane (w tym hak opłaty) za każdym razem, gdy koszyk jest aktualizowany.

Dodanie opłaty w zależności od tego, które produkty są w koszyku

Wspomniałem o tym wcześniej, ale wspomnę jeszcze raz: Masz pełny dostęp do obiektu koszyka za pomocą WC()->cart, więc możesz przeszukać zawartość koszyka pod kątem określonego identyfikatora produktu i dodać opłatę, jeśli istnieje w koszyku.

Korzystanie WC()->cart->get_cart_contents()zwraca tablicę wszystkich produktów w koszyku. Możesz przejść przez to za pomocą prostej foreachpętli i sprawdzić każdy produkt pod kątem pożądanego stanu, lub jeśli chcesz po prostu sprawdzić identyfikatory, możesz wyodrębnić wszystkie identyfikatory produktów w jednym wierszu, tak jak poniżej:

Poniższy przykład pokazuje, jak można dodać opłatę w zależności od tego, czy w koszyku znajduje się produkt o określonym ID:

Możesz również użyć podobnych operacji do wyodrębnienia ilości, jeśli musisz dodać opłatę, gdy klient dodaje naprawdę dużą ilość czegoś.

Podsumowując

W tym poście pokazano, jak dodać opłatę niestandardową oraz pięć przykładów, jak dodać opłatę w zależności od określonych warunków. Te warunki były wszystkim, co spotkałem i mogłem wymyślić, i powinny przynajmniej dać wskazówki, jak zdobyć informacje, aby jeszcze bardziej dostosować swoje warunki. Daj mi znać, czy pracowały dla Ciebie, czy znalazłeś inny stan, o którym nie pomyślałem!

Źródło nagrywania: awhitepixel.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów