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

Przewodnik: Zmień ceny w WooCommerce według kodu

74

Ten post jest dla tych, którzy chcą dodać kod, który dostosuje ceny w Twoim sklepie internetowym WordPress WooCommerce. Możesz albo podnieść ceny, albo je zdyskontować. A jak i skąd przyjdą korekty, zależy wyłącznie od twojego przypadku. Twój sklep internetowy może działać z rabatami procentowymi ustawionymi dla każdego zarejestrowanego użytkownika, niestandardowym ustawieniem globalnym w ustawieniach WooCommerce, stałą kwotą zakodowaną na sztywno lub czymś ustawionym dla każdego produktu lub kategorii produktu.

Starałem się, aby kod był jak najbardziej ogólny, abyś mógł dostosować go do swojego przypadku. W moim przypadku korekty cen pochodzą z procentowego rabatu dodanego jako meta użytkownika.

Kod został zaktualizowany, aby działał dla WooCommerce 3.x i nowszych. Nie mogę zagwarantować, że zadziała w niższych wersjach.

Krok 1: Zrób miejsce na swój kod

Pierwszy krok jest łatwy; potrzebujesz miejsca na dodanie kodu. To zależy wyłącznie od Ciebie. Możesz dodać to bezpośrednio w motywie functions.phplub gdzieś w plikach wtyczek. Lubię pracować z klasami, które ładnie trzymają wszystko w jednym miejscu. Dla uproszczenia umieszczę klasę w podkatalogu /src/w moim motywie, a następnie dołączę ją i stworzę w programie functions.php.

require_once(get_stylesheet_directory().'/src/ChangePrices.php'); new ChangePrices();

Zmodyfikuj ten krok, aby pasował do Twojego przypadku.

Krok 2: Zdecyduj, jak powinny działać korekty cen

Ten krok może być już dla Ciebie jasny – tutaj musisz wiedzieć, jak i gdzie uzyskać korektę ceny. Celem końcowym powinna być liczba, przez którą dodajesz, odejmujesz, mnożysz lub dzielisz ceny.

W moim przypadku mam meta użytkownika na każdym użytkowniku, która zawiera zniżkę procentową; liczba od 0 do 99. Administrator strony może ustawić zniżkę dla każdego użytkownika. Nie pokażę kodu dodawania pola meta użytkownika, ponieważ może to nie być dla Ciebie i można to łatwo zrobić za pomocą np. Zaawansowanych pól niestandardowych.

W swojej klasie trzymam zmienną klasy, która w konstruktorze będzie ustawiona na mnożnik. W zależności od tego, czy użytkownik jest zalogowany, pobiorę zapisany rabat od użytkownika i stworzę z niego mnożnik. Domyślnie mnożnik powinien wynosić 1. Cena 1 = taka sama cena jak poprzednio. Ale dla rabatu np. 10% mnożnik wyniósłby 0,9. Cena 0,9 = cena obniżona o 10%.

Teraz, gdy mam gotowy mnożnik, nadszedł czas, aby przyjrzeć się faktycznemu dostosowaniu cen w WooCommerce.

Krok 3: Filtry cen w WooCommerce

W WooCommerce jest jeden filtr dla prostych, pogrupowanych i zewnętrznych typów produktów, a drugi dla zmiennych typów produktów. Zalecam dodanie obu filtrów, aby uwzględnić wszystkie typy produktów. Oprócz tego WooCommerce działa z trzema dodatkowymi filtrami cen:

  • Ceny regularne (woocommerce_product_get_regular_pricei woocommerce_product_variation_get_regular_price)
  • Ceny sprzedaży (woocommerce_product_get_sale_pricei woocommerce_product_variation_get_sale_price)
  • Aktualna aktywna cena (woocommerce_product_get_pricei woocommerce_product_variation_get_price). Aktualna aktywna cena zostanie pobrana z ceny zwykłej lub ceny promocyjnej.

Teraz możesz po prostu przefiltrować aktualną aktywną cenę i nazwać ją na dzień, ale zależy to od tego, jak chcesz obsługiwać wyświetlanie cen w swoim sklepie internetowym. Pamiętaj, że produkty w wyprzedaży domyślnie wyświetlają starą cenę (cena zwykła) w przekreśleniu, a obok niej cenę promocyjną (cena aktywna). Jeśli filtrujesz tylko x_get_price, a produkt jest w sprzedaży, stara cena będzie wyświetlana bez rabatu.

Z tego powodu decyduję się filtrować zarówno aktywną cenę bieżącą (x_get_price) jak i cenę regularną (x_get_regular_price), ponieważ nie chcę mylić użytkowników mojego sklepu internetowego.

Pisanie filtra cen

Wszystkie cztery filtry odnoszą się do tej samej funkcji. Wewnątrz funkcji po prostu mnożymy podaną cenę przez zmienną class. Pamiętaj, że jeśli nie ustawiono rabatu, mnożnik wynosi 1, co skutkuje brakiem zmiany ceny.

Pamiętaj, że wszystkie filtry podają obiekt produktu jako drugi parametr. Jeśli chcesz dostosować ceny w zależności od produktów, możesz w tym celu dostosować kod.

Jeśli sprawdzisz swój sklep internetowy będąc zalogowanym jako użytkownik ze zniżką, powinieneś zobaczyć teraz obniżone ceny! Jednak jeszcze nie skończyliśmy. WooCommerce wprowadził pewne zmiany w wersji 2.4.7 (więcej tutaj ), które wpływają na dynamiczną wycenę produktów zmiennych.

Obsługa zmiennych cen produktów

Aby dynamiczna wycena działała na produktach zmiennych, należy dodać filtry wymienione w poście na blogu, do którego link znajduje się powyżej; woocommerce_variation_prices_price(i odpowiadający mu zwykły filtr cenowy woocommerce_variation_prices_regular_price) oraz filtr woocommerce_get_variation_prices_hash. Filtr mieszający obsługuje wewnętrzną pamięć podręczną WooCommerce – i musimy powiedzieć WooCommerce, aby wyczyścił ją poprawnie, gdy zmodyfikujemy ceny według kodu.

Pierwsze dwa filtry cenowe postępują tak samo jak adjustPrice(), jednak przypisuję im inną funkcję, ponieważ parametry są różne. Jeśli chodzi o funkcję hash filter, musimy dodać do tablicy hash, aby określić, kiedy pamięć podręczna powinna zostać wyczyszczona. Dodanie identyfikatora użytkownika to dobry pomysł, ponieważ mnożnik jest unikalny dla każdego użytkownika.

Wreszcie tak powinno być!

Pamiętaj, że masz dostęp do pełnego obiektu produktu we wszystkich filtrach (nawet do obiektu odmiany w ostatnich dwóch). Jest to przydatne w przypadkach, gdy chcesz dostosować ceny na podstawie informacji o produkcie; takie jak wykluczenie niektórych produktów z rabatu lub zastosowanie rabatu na podstawie kategorii produktu. Dostosowanie kodu do tego, czego potrzebujesz w swoim przypadku, powinno być całkiem proste.

Pełny kod końcowy

Jak zwykle mam nadzieję, że nauczyłeś się czegoś, śledząc krok po kroku ten post, ale udostępnię pełną klasę w celach informacyjnych:

Ź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