Rozszerzanie magazynów danych CRUD w WooCommerce
Opublikowany: 2018-01-25Słyszałeś o CRUD? W programowaniu oznacza to tworzenie, odczytywanie , aktualizowanie i usuwanie , podstawowe operacje, które wszyscy wykonujemy na naszych danych. Dzięki WooCommerce, która obejmuje produkty, zamówienia, klientów, kupony i inne dane przechowywane w Twojej bazie danych.
Ostatnie zmiany w WooCommerce związane z CRUD oznaczają, że platforma jest na najlepszej drodze do większej skalowalności. Uwaga: ten post ma charakter techniczny i zakłada pewien poziom komfortu z kodem PHP.
Uczący się dźwięku? Punkty w tym poście pochodzą z mojego wystąpienia na WooConf 2017.
Bardziej skalowalny WooCommerce
Aby ułatwić życie naszym programistom, dodaliśmy specjalne obiekty CRUD w WooCommerce 3.0. Zastępuje to cały poprzedni metakod postu w WooCommerce i musi być również używany przez wszystkie rozszerzenia, aby umożliwić skalowanie witryny WooCommerce.
W tym samym czasie dodaliśmy kolejny zestaw obiektów o nazwie Magazyny danych, które są przeznaczone do ładowania i zapisywania danych WooCommerce do iz bazy danych. Te abstrakcje mają na celu umożliwienie WooCommerce obsługi większej liczby zamówień, produktów i klientów. Osiąga się to poprzez podłączenie do WooCommerce, aby używał różnych środków do przechowywania danych.
Każda implementacja magazynu danych określa sposób przechowywania i pobierania danych, niezależnie od tego, czy pochodzą one z bazy danych, czy z innego sposobu przechowywania danych. Dzięki nim możliwe jest teraz skalowanie WooCommerce do wielkości sprzedaży w przedsiębiorstwie, z wdrożeniami, które mogą obsłużyć miliony zamówień. Wszystko, co należy zrobić, to podłączyć się do filtra, który na nowo definiuje, co WooCommerce używa do przechowywania danych.
Oprócz ulepszeń wydajności, które mogą zapewnić abstrakcje CRUD i magazynu danych, konstrukcje te zapewniają znacznie większą elastyczność w sposobie zapisywania i ładowania danych dla sklepu WooCommerce. Dla każdego typu danych WooCommerce (produkty, zamówienia, klienci itp.) masz teraz możliwość programowego decydowania, skąd te dane powinny pochodzić i gdzie powinny trafić. Pozwala to konstruktorom sklepów dostosować WooCommerce do swoich potrzeb, łącząc się z innymi systemami lub w razie potrzeby ulepszać wydajność różnych części WooCommerce.
Oprócz ulepszeń wydajności, które mogą zapewnić abstrakcje CRUD i magazynu danych, konstrukcje te zapewniają znacznie większą elastyczność w sposobie zapisywania i ładowania danych dla sklepu WooCommerce.
Co to dokładnie oznacza? Pomyśl o możliwościach:
- Zapis danych zamówienia w osobnej bazie danych z wpdb.
- Pobieranie danych produktu z istniejącej bazy danych w innym systemie.
- Udostępnianie asortymentu produktów w wielu witrynach (przykład poniżej).
Pobieranie danych produktów za pośrednictwem interfejsu API z innego źródła.
Wykonywanie polecenia CLI do załadowania z jednej składnicy danych i zapisania do innej (wbudowany import/eksport).
Rozszerzanie magazynów danych
Dzięki abstrakcjom CRUD i magazynu danych WooCommerce nie dba już o to, skąd pochodzą dane ani w jaki sposób są zapisywane. Możesz to wszystko kontrolować sam.
W poniższym przykładzie pobieram stan inwentarza z oddzielnej usługi i zmienia się tylko stan inwentarza każdego produktu. Jedną z korzyści płynących z tego jest to, że mogę sprzedawać wiele witryn WooCommerce z tej samej liczby zapasów i mieć pewność, że nie sprzedałem zbyt wiele.
Oto punkt wejścia, filtr install_data_store
.
W przypadku rzeczywistej składnicy danych należy zaimplementować dwa interfejsy: WC_Object_Data_Store_Interface
i WC_Product_Data_Store_Interface
.
Ten magazyn danych jest przeznaczony do rozszerzania istniejącego magazynu danych (zwykle domyślna implementacja meta postu). Pobiera istniejącą składnicę danych w swoim konstruktorze i modyfikuje tylko sposób obsługi zapasów. Wszystko inne jest obsługiwane normalnie przez istniejący magazyn danych.
W przypadku większości wymaganych funkcji ta składnica danych po prostu wywołuje nadrzędną składnicę danych:
Jedyną zmianą, jaką wprowadza ten magazyn danych, jest sposób odczytywania spisu. W tym przypadku normalnie odczytuje z nadrzędnej składnicy danych, ale zastępuje ilość zapasów przed zwróceniem:
Dzięki abstrakcjom CRUD i magazynu danych WooCommerce nie dba już o to, skąd pochodzą dane ani w jaki sposób są zapisywane. Możesz to wszystko kontrolować sam.
Powyższa ilość zapasów jest pobierana z API. W rzeczywistej aplikacji to wywołanie interfejsu API może przejść do systemu kontroli zapasów, POS, a nawet innej witryny WooCommerce.
Pełny kod dla powyższego przykładu jest dostępny pod adresem: https://github.com/coderkevin/woocommerce-product-inventory-datastore
Nieskończone możliwości dzięki obiektom CRUD i magazynom danych
Jak pokazano w powyższych przykładach, możliwości są nieograniczone. WooCommerce 3.3, który ma zostać wydany 30 stycznia, zawiera kolejny ekscytujący kamień milowy związany z CRUD. Więcej na: WooCommerce 3.3 Nowe webhooki CRUD.
Użyj swojej wyobraźni, aby tworzyć rozwiązania dotyczące danych w nowy i interesujący sposób za pomocą obiektów CRUD i magazynów danych, i pamiętaj, aby dać nam znać, jak sobie radzisz w komentarzach lub dołączając do społeczności WooCommerce Slack.