Jak pracować z WooCommerce Rest API z Pythonem

Jak pracować z WooCommerce Rest API z Pythonem

WordPress jest prawdopodobnie najczęściej używanym CMS na świecie (szacuje się, że prawie 40% wszystkich stron internetowych jest budowanych za pomocą platformy): jest bardzo łatwy w instalacji i użyciu, i pozwala nawet nie rozwijać się na witrynie w ciągu kilku minut.
WordPress ma bardzo duży ekosystem wtyczek; Jednym z najbardziej znanych jest WooCommerce, co pozwala nam przekształcić witrynę w sklep internetowy w kilku krokach. Wtyczka korzysta z infrastruktury API WordPress REST; W tym samouczku zobaczymy, jak wchodzić w interakcje z interfejsem API WooCommerce za pomocą języka programowania Python, pokazując, jak wymienić, tworzyć, aktualizować i usuwać produkty i kategorie.

W tym samouczku się nauczysz:

  • Jak wygenerować poświadczenia API WooCommerce REST i włączyć ładne permalinks
  • Jak wchodzić w interakcje z interfejsem WooCommerce REST za pomocą pakietu Pythona i WooCommerce
  • Jak uzyskać informacje o istniejących kategoriach WooCommerce, tworzyć, aktualizować i usuwać
  • Jak uzyskać informacje o istniejących produktach WooCommerce
  • Jak tworzyć proste i zmienne produkty z wariantami
  • Jak aktualizować i usunąć produkt

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny dystrybucja
Oprogramowanie Python3
Inny Działająca instancja WordPress z zainstalowaną wtyczką WooCommerce
Konwencje # - Wymaga, aby podane Linux -commands były wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-wymaga wykonania Linux-commands jako zwykłego niewidzianego użytkownika

Generowanie poświadczeń API WooCommerce REST

Ze względu na ten samouczek założymy, że mamy działającą instancję WordPress z już zainstalowaną wtyczką WooCommerce. Pierwszą rzeczą, którą musimy zrobić, jest wygenerowanie naszych poświadczeń API WooCommerce REST:
Używane w każdym żądaniu HTTP wykonamy. Generowanie poświadczeń jest to bardzo łatwe; Wszystko, co musimy zrobić, to przejść do WooCommerce -> Ustawienia W menu pionowym możemy znaleźć na stronie administracji WordPress:

Po stronie ustawień wtyczki klikamy kartę „Advanced”, a następnie włączamy
Link „REST API”, który znajduje się w menu Tab. Na stronie, która będzie
Otwarcie, klikamy przycisk „Utwórz klucz API”:

Otrzymamy formularz tworzenia kluczowego tworzenia API i zostaniemy poproszeni o wstawienie:

  • Opis, który będzie używany jako przyjazna nazwa do łatwej identyfikacji poświadczeń
  • Użytkownik, który będzie korzystał z klucza
  • Uprawnienia, które zostaną przyznane kluczowi (tylko odczyt | Write tylko | Przeczytaj i zapisz)

Zauważ, że mamy szansę utworzyć kilka kluczy o różnych uprawnieniach, aby ograniczyć operacje przyznane dla konkretnego użytkownika. Ze względu na ten samouczek utworzymy klawisz API z uprawnieniami do odczytu i zapisu:

Po przygotowaniu klikamy przycisk „Generuj klawisz API” i oba Klucz klienta i Sekret konsumentów zostaną wygenerowane i wyświetlane nam. Musimy upewnić się, że przechowujemy oba w bezpiecznym miejscu, Po opuszczeniu strony zostaną ukryte:

Po wygenerowaniu naszych klawiszy istnieje kolejna akcja, którą musimy wykonać z backenda administracji WordPress: musimy upewnić się, że prawo Ładne permalink są używane, w przeciwnym razie punkty końcowe API nie będą działać. Aby wykonać zadanie, do którego nawiążamy Ustawienia -> Permalinks W lewym pionowym menu WordPress. W menu strony wybieramy „Post Name”, a następnie zapisujemy zmiany:



To wszystko, co musimy robić po stronie WordPress. W następnej sekcji zobaczymy, jak wchodzić w interakcje z interfejsami WooCommerce REST za pomocą Pythona.

Zainstaluj pakiet WooCommerce

W tej sekcji zobaczymy, jak wchodzić w interakcje z interfejsem WooCommerce REST za pomocą języka programowania Python. Zamiast pisać kod, musimy wykonać od zera żądania HTTP, skorzystamy z WooCommerce pakiet, który złagodzi naszą pracę. Aby zainstalować pakiet, którego możemy użyć pypeć, Menedżer pakietów Python. Jeśli pracujemy w wirtualnym środowisku utworzonym za pomocą Venv, Możemy uruchomić:

$ pip instaluj wooCommerce 

Jeśli nie używamy środowiska wirtualnego, przynajmniej powinniśmy zainstalować pakiet tylko dla naszego użytkownika. Aby to zrobić, dodajemy --użytkownik opcja polecenia, która staje się:

$ pip instaluj wooCommerce --user 

Kiedyś WooCommerce Pakiet jest zainstalowany, możemy zacząć pisać nasz kod.

Inicjowanie klasy API

Pierwszą rzeczą, którą musimy zrobić, aby wchodzić w interakcje z interfejsem WooCommerce Rest, za pomocą Pythona i WooCommerce pakiet to import API klasa i utwórz jego instancję, jak pokazano poniżej:

#!/usr/bin/env python3 from woocommerce import API wcapi = API( url="http://localhost", consumer_key="ck_147eb955838043597462c3f9c4f91cba08498159", consumer_secret="cs_55a72d6c7bde09b7f36befed32aa90709261c097", timeout=50 ) 
Kopiuj

API Konstruktor klas bierze trzy obowiązkowe argumenty:

  1. URL naszej witryny
  2. Klucz konsumencki WooCommerce REST API
  3. WooCommerce Rest API Consumer Secret

W powyższym przykładzie widać, że zdaliśmy trzeci argument, koniec czasu: jest to opcjonalne i domyślnie 5 sekundy. W takim przypadku zapewniamy dla niego większą wartość: 50. W moim przypadku było to konieczne, aby prośby odniosły sukces, ale w rzeczywistości
Scenariusz życia, nie powinniśmy go zmieniać, aby można go było całkowicie pominąć.

Po utworzeniu wystąpienia API klasa, w tym przypadku, do którego odwołuje się Wcapi Zmienne, możemy kontynuować i wykonywać nasze połączenia API.

Kategorie

Ze względu na ten samouczek będziemy pracować tylko z kategoriami i produktami. Podane przykłady powinny wystarczyć, aby czytelnikowi wyobrazić sobie, jak działa interfejs API. Zacznijmy od kategorii, ponieważ powinny one przedstawić przede wszystkim, aby się odwoływać podczas tworzenia produktów.

Tworzenie kategorii

Jako pierwszy przykład zobaczymy, jak utworzyć kategorię. Zaczynamy definiować dane kategorii w słowniku Python:

kategoria_data = „name”: „przykładowa kategoria”, „Opis”: „tylko przykład kategorii” 
Kopiuj

Jedynym obowiązkowym parametrem, którego powinniśmy użyć podczas tworzenia kategorii, jest nazwa, które należy podać jako ciąg. W powyższym przykładzie określiliśmy również opis Klucz, aby podać krótki opis kategorii (możesz sprawdzić oficjalną dokumentację dla pełnej listy nieruchomości kategorii).

Po utworzeniu słownika zawierającego dane kategorii możemy wykonać żądanie interfejsu API używane do tworzenia kategorii, które korzysta z POST Czasownik http:

Odpowiedź = WCAPI.Post („Produkty/kategorie”, kategoria_data) 
Kopiuj

Jeśli żądanie jest wykonywane bez błędów, dzwonienie JSON Metoda na odpowiedź Obiekt, zwróci odpowiedź sformatowaną jako słownik Python, który opisuje dane użyte do utworzenia kategorii: będzie to obejmować unikalny identyfikator Służy do przechowywania kategorii w bazie danych, która jest niezbędną informacją, jeśli chcemy odwołać się do niej później (na przykład podczas tworzenia podkategorii lub produktu, który należy uwzględnić w samej kategorii). W naszym przypadku jest to, co jest zwracane przez serwer:

„ID”: 17, „Nazwa”: „Przykładowa kategoria”, „Slug”: „Przykładowy kategoria”, „rodzic”: 0, „Opis”: „tylko przykład kategorii”, „Wyświetlacz”: „Domyślny” , „Image”: none, „menu_order”: 0, „hrabia”: 0, „_links”: 'self': ['href': 'http: // localhost/wp-json/wc/v3/produkty/produkty /kategorie/17 '], „Collection”: [' href ':' http: // localhost/wp-json/wc/v3/produkty/kategorie ' 
Kopiuj

Jak widzimy, kategoria została zapisana 17 jako unikalny identyfikator.

Aktualizacja kategorii

Aby zaktualizować istniejącą kategorię, musimy odwoływać się do niej za pomocą jej ID, które powinny być uwzględnione w ramach punktu końcowego żądania. Najpierw tworzymy słownik, który zawiera dane kategorii, które należy zaktualizować; W poniższym przykładzie zmieniamy Opis kategorii:

kategoria_data = „Opis”: „Zmodyfikowany przykład kategorii” 
Kopiuj

Gdy dane będą gotowe, możemy wysłać nasze żądanie, korzystając z umieścić Metoda Wcapi obiekt, który, jak można się domyślać, wysyła żądanie za pomocą UMIEŚCIĆ Czasownik http:

Odpowiedź = WCAPI.Put („Produkty/kategorie/17”, kategoria_data) 
Kopiuj

Tak jak poprzednio, wykonując JSON Metoda odpowiedź Obiekt, odzyskujemy zaktualizowane informacje o kategorii zwrócone przez serwer, już przekonwertowane na słownik Python:

„ID”: 17, „Nazwa”: „przykładowa kategoria”, „ślimak”: „przykład-kategoria”, „rodzica”: 0, „Opis”: „Modyfikowana kategoria Przykład”, „Display”: „Default”, „Image”: none, „menu_order”: 0, „hrabia”: 0, '_Links': 'self': ['href': 'http: // localHost/wp-json/wc/v3/produkty/produkty/produkty/produkty/produkty/ kategorie/17 '], „Collection”: [' href ':' http: // localhost/wp-json/wc/v3/produkty/kategorie '] 
Kopiuj

Uzyskanie informacji o wszystkich kategoriach lub określonej

Uzyskanie listy wszystkich istniejących kategorii jest naprawdę proste. Wszystko, co musimy zrobić, to wykonać Dostawać Metoda Wcapi obiekt, który utworzyliśmy wcześniej i określ prawidłowy punkt końcowy (Produkty/kategorie):

Odpowiedź = WCAPI.Get („Produkty/kategorie”) 
Kopiuj

Tak jak poprzednio zawartość odpowiedzi można uzyskać jako słownik Python, wykonując JSON Metoda na obiekcie odpowiedzi. W takim przypadku metoda zwraca następujące:

[„ID”: 17, „Nazwa”: „Przykładowa kategoria”, „ślimak”: „przykład-kategoria”, „rodzic”: 0, „Opis”: „tylko przykład kategorii”, „Display”: „Domyślny ', „Image”: none, „menu_order”: 0, „hrabia”: 0,' _Links ': ' self ': [' href ':' http: // localhost/wp-json/wc/v3/ produkty/kategorie/17 '], „Collection”: [' href ':' http: // localhost/wp-json/wc/v3/produkty/kategorie '], ' id ': 16, „Nazwa”: „test”, „ślimak”: „test”, „rodzic”: 0, „Opis”: „test”, „wyświetlacz”: „default”, „obraz”: none, „menu_order”: 0 , „Count”: 0, '_Links': 'self': ['href': 'http: // localhost/wp-json/wc/v3/categies/16'], 'collection': ['href': 'http: // localhost/wp-json/wc/v3/produkty/kategorie'], 'id': 15, „nazwa”: „bez kategorii”, „ślimak”: ' bez kategorii ”,„ rodzic ”: 0,„ Opis ”:„, „Display”: „Domyślny”, „obraz”: brak, „menu_order”: 0, „crowiz”: 0, „_Links”: „self”: [„href”: 'http:// localhost/wp-json/wc/v3/produkty/kategorie/15 '], „Collection”: [' href ':' http: // localhost/wp-json/wc/v3/produkty/kategorie ' ]] 
Kopiuj

Jeśli chcemy pobrać informacje o określonej kategorii, wszystko, co musimy zrobić, to podać jego identyfikator jako część punktu końcowego. Na przykład, aby uzyskać szczegóły dotyczące kategorii z identyfikatorem 16 (Test), uruchomimy:

Odpowiedź = WCAPI.Get („Produkty/kategorie/16”) 
Kopiuj

Usuwanie kategorii

ID kategorii jest również potrzebne, aby odnieść się do niego, gdy chcemy go usunąć. W takich przypadkach powinniśmy uruchomić żądanie HTTP, które korzysta z USUWAĆ Czasownik http, ponownie dostarczając identyfikator kategorii jako część punktu końcowego. Aby usunąć kategorię „testu”, uruchomimy:

Odpowiedź = WCAPI.delete ('produkty/kategorie/16', param = „Force ', true) 
Kopiuj

Podczas wykonywania usuwać metoda usuwania kategorii, musimy również użyć siła parametr i ustaw go na PRAWDA. To jest wymagany, Ponieważ przeniesienie kategorii do śmieci nie jest obsługiwane przez API REST; Zasób zostanie na stałe usunięty. Jeśli wszystko idzie zgodnie z oczekiwaniami, podobnie jak w poprzednich przykładach, dzwoniąc JSON Metoda w obiekcie odpowiedzi zwróci słownik zawierający usunięte dane dotyczące zasobów.

Wykonanie wielu działań jednocześnie

Załóżmy, że chcemy wykonywać wiele działań jednocześnie: możemy chcieć usunąć niektóre kategorie, stworzyć niektóre nowe i zaktualizować inne. Jak możemy to zrobić od razu, wykonując tylko jedno żądanie? Wszystko, co musimy zrobić, to wysłać żądanie za pomocą POST Czasownik http do produkty/kategorie/partia punkt końcowy, za pomocą post Metoda Wcapi obiekt. Oto przykład:

batch_data = „create”: [„name”: „nowa kategoria 1”, „Opis”: „Pierwsza nowa kategoria”, „name”: „nowa kategoria 2”, „Opis”: „Druga nowa kategoria” ], „aktualizacja”: [„id”: 17, „Opis”: „zaktualizowany opis”], „Usuń”: [15] 
Kopiuj

Dane partii są zdefiniowane, tak jak widzieliśmy w poprzednich przykładach, przy użyciu słownika Pythona. W tym słowniku mamy kilka kluczy nazwanych po akcjach, które należy wykonać:

  • tworzyć
  • aktualizacja
  • usuwać

Wartość przypisana do tworzyć Kluczem musi być lista słowników, z których każdy opisuje dane, które należy użyć do utworzenia nowej kategorii. W tym przypadku stworzyliśmy dwie nowe kategorie, o nazwie „Nowa kategoria 1” i „Nowa kategoria 2”.

Podobnie wartość odpowiadająca aktualizacja Kluczem musi być lista słowników, z których każdy opisuje dane, które należy użyć do aktualizacji określonej kategorii, zidentyfikowanej przez jej ID.

Wreszcie wartość związana z usuwać Klucz musi być listą ID kategorii, które należy usunąć. W tym przypadku postanowiliśmy usunąć kategorię za pomocą 16 jako unikalny identyfikator. Gdy nasze dane będą gotowe, wykonujemy
wniosek:

Odpowiedź = WCAPI.Post („Produkty/kategorie/partia”, Batch_Data) 
Kopiuj

odpowiedź Obiekt będzie zawierał przedstawienie obiektowej odpowiedzi wysyłanej przez serwer. Jak zawsze, wykonując JSON Metoda tego obiektu odzyskamy słownik Pythona zawierający podsumowanie wykonanej operacji oraz opis zaangażowanych kategorii:

„Utwórz”: ['ID': 18, „Nazwa”: „Nowa kategoria 1”, „Slug”: „Nowa kategoria-1”, „rodzic”: 0, „Opis”: „Pierwsza nowa kategoria” , „wyświetlacz”: „domyślny”, „image”: none, „menu_order”: 0, „hrabia”: 0, '_Links': 'self': ['href': 'http: // localhost/wpp -JSON/wc/v3/produkty/kategorie/18 '], „Collection”: [' href ':' http: // localhost/wp-json/wc/v3/produkty/kategorie '], „ID”: 19, „Nazwa”: „Nowa kategoria 2”, „Slug”: „Nowa kategoria-2”, „rodzic”: 0, „Opis”: „Druga nowa kategoria”, „Display”: ' Domyślnie ', „image”: none, „menu_order”: 0, „hrabia”: 0,' _Links ': ' self ': [' href ':' http: // localhost/wp-json/wc/v3 /produkty/kategorie/19 '], „Collection”: [' href ':' http: // localhost/wp-json/wc/v3/produkty/kategorie ']], „aktualizacja”: [ „ID”: 17, „Nazwa”: „Przykładowa kategoria”, „Slug”: „Przykładowy kategoria”, „rodzic”: 0, „Opis”: „Zaktualizowano opis”, „Wyświetlacz”: „Domyślny”, ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ' Zdjęcie ': Brak,„menu_order”: 0, „hrabia”: 0, '_Links': 'self': ['href': 'http: // localhost/wp-json/wc/v3/produkty/kategorie/17'] , „Collection”: ['href': 'http: // localhost/wp-json/wc/v3/produkty/kategorie']], 'delete': ['id': 16, 'Nazwa nazwa „:„ Test ”,„ Slug ”:„ Test ”,„ rodzic ”: 0,„ Opis ”:„ Test ”,„ Display ”:„ Default ”,„ Image ”: none,„ menu_order ”: 0, ',', ',', ',', ',', ', 0,' hrabia ': 0,' _Links ': ' self ': [' href ':' http: // localhost/wp-json/wc/v3/produkty/kategorie/16 '],' collection ': [ „href”: 'http: // localhost/wp-json/wc/v3/produkty/kategorie']] 
Kopiuj

Produkty

Do tej pory widzieliśmy, jak wykonać podstawowy Crud Operacje w kategoriach. Pracujmy teraz z produktami. Kod, który powinien być używany, jest dość podobny; Jakie zmiany są oczywiście punkty końcowe API i atrybuty, które powinny
być używane podczas tworzenia produktu.

Tworzenie prostego produktu

Pierwszym przykładem, jaki zobaczymy, jest to, jak utworzyć „prosty” produkt, bez wariacji (warianty to nieco inne wersje tego samego produktu, na przykład na różnych rozmiarach lub kolorach). Najpierw definiujemy produkt
dane:

produkt_data = „name”: „Prosty przykładowy produkt”, „typ”: „prosty”, „regularny_price”: „22.50 ",„ Stock_quantity ”: 10,„ Short_description ”:„ Tylko przykładowy produkt ”,„ Opis ”:„ To jest tylko przykładowy produkt, utworzony z interfejsem WooCommerce REST ”,„ kategorie ”: [„ ID ”: 17], „Images”: ["src": "https: // linuxconfig.Org/Images/LinuxConfig_Logo.png ",„ alt ”:„ przykład-image ”] 
Kopiuj

Rzućmy okiem na informacje o produkcie, których użyliśmy w dane produktu słownik. Zdefiniowaliśmy produkt nazwa (Prosty przykładowy produkt), a następnie określiliśmy jego typ, które w tym przypadku jest „proste”, ponieważ tworzymy listę produktu fizycznego bez wariacji. Obie te informacje muszą być określone jako smyczki.

Określiliśmy również produkt normalna cena (ciąg), wielkość zbiorów (liczba całkowita), krótki opis i regularne opis, oba jako ciągi: są one wyświetlane w różnych częściach strony, gdy produkt
jest wizualizowany przez potencjalnego klienta.

Następną rzeczą, jaką zrobiliśmy, było określanie listy kategorii produktów. Produkt powinien zostać uwzględniony w ramach. Do każdej kategorii powinna się odwoływać ID (liczba całkowita). W takim przypadku właśnie odnieśliśmy się do kategorii z 17 jako wyjątkowe
identyfikator („kategoria przykładowa”).

Ostatnią rzeczą, którą zdefiniowaliśmy, była lista obrazów, które powinny być powiązane z produktem. Każdy obraz jest opisany za pomocą słownika. Tutaj użyliśmy jednego obrazu, podając jego src (ciąg) i Alt (alternatywny tekst, jako
ciąg).

Ten, którego użyliśmy, to tylko bardzo mały podzbiór wszystkich możliwych właściwości produktu. Gdy nasze dane będą gotowe, wysyłamy POST Żądanie HTTP, używając post Metoda Wcapi obiekt. Punkt końcowy, do którego należy wysłać żądanie, jest
„Produkty”:

Odpowiedź = WCAPI.Post („Produkty”, produkt_data) 
Kopiuj

Jeśli żądanie zakończy się powodzeniem, wykonując odpowiedź.JSON () Uzyskamy słownik Pythona zawierający informacje o nowo utworzonym produkcie:

„Id”: 29, „name”: „Prosty przykładowy produkt”, „Slug”: „Prosto-Example-Product”, „Permalink”: „http: // localHost/Product/Simple-Example-Product/”, „date_created”: „2021-03-22T14: 53: 44”, „date_created_gmt”: '2021-03-22t14: 53: 44', 'Date_Modified': '2021-03-22t14: 53: 44', 'Date_Modified_Gmt „:„ 2021-03-22t14: 53: 44 ”,„ typ ”:„ proste ”,„ status ”:„ Publij ”,„ Fexed ”: False,„ Catalog_visibility ”:„ Visible ”,„ Opis ”:„ to to tylko przykładowy produkt, utworzony z interfejsem WooCommerce REST ”,„ Short_description ”:„ tylko przykładowy produkt ”,„ sku ”:”, „cena”: '22.50 ', „Regular_price”: '22.50 ', „sale_price”: ",', 'date_on_sale_frSh': none, 'date_on_sale_from_gmt': brak, 'date_on_sale_to': none, 'date_on_sale_to_gmt': brak, 'on_sale': false, 'zakupy,' curtasable ' , „Virtual”: false, „pobieranie”: false, „pobieranie”: [], „pobierz_limit”: -1, „pobierz_expiry”: -1, 'external_url': ", 'button_text':", 'podatkowa_status': „Podatkowy”, „podatkowy”: „,„ zarządzaj_stock ”: false,„ stock_quantity ”: brak,„ bluzy ”:„ nie ”,„ backorders_allowed ”: false,„ back uporded ”: false,„ sold_indIdicitycznie ”: false,„ waga „waga” „:”, „Dimensions”: 'długość': ", ',':", 'height': ", 'shipping_required': true, 'wysphisher_taxable': true, 'class wysyłki':", ',' wysyłka_class_id ': 0, „recenzja_allowed”: true, „sceni_ration”: „0”, „rating_count”: 0, „upsell_ids”: [], „cross_sell_ids”: [], „pary_id”: 0, „zakup_note”: „,„ kategorie ”:„, „kategorie” ': [' id ': 17,' nazwa ':' przykładowa kategoria '', 'ślimak':„Przykład-kategoria”], „Tags”: [], „Images”: ['id': 28, 'date_created': '2021-03-22t14: 53: 44', 'date_created_gmt': '2021- 03-22T14: 53: 44 ', „date_modified”:' 2021-03-22t14: 53: 44 ',' date_modified_gmt ':' 2021-03-22t14: 53: 44 ',' src ':' http: // LocalHost/WP-Content/Uploads/2021/03/LinuxConfig_Logo-3.png ', „name”: „Linuxconfig_logo-3.png ', „alt”: „przykład-image”], „atrybuty”: [], „default_attributes”: [], „Variations”: [], „gruped_products”: [], „menu_order”: 0,', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',' menu price_html ': '22, 50 €', 'contect_ids': [], 'meta_data': [], 'stock_status': 'instock', '_links': 'self': ['href': 'http: // localhost/wp-json/wc/v3/products/29 '], „kolekcja”: [' href ':' http: // localhost/wp-json/wc/v3/produkty '] 
Kopiuj

Tworzenie zmiennego produktu i jego odmian

W poprzednim przykładzie stworzyliśmy „prosty” produkt. Teraz zobaczmy, jak utworzyć produkt „zmienny”. Podstawowa definicja jest taka sama jak ta, której użyliśmy powyżej. Wszystko, co musimy zrobić, to dodać atrybuty, które łącznie będą reprezentować odmiany produktu. Załóżmy na przykład, że nasz produkt jest koszulką dostępną w wielu kolorach i rozmiarach: każda wariacja zostanie skomponowana przez określony kolor powiązany z określonym rozmiarem:

VARILE_PRODUCT_DATA = „Nazwa”: „Zmienna przykładowy produkt”, „typ”: „zmienna”, „short_description”: „Just a Variable Product”, „Opis”: „To jest produkt zmienny, utworzony z interfejsem API REST WooCommerce” , „kategorie”: ["id": 17], "images": ["src": "https: // linuxconfig.Org/Images/LinuxConfig_Logo.png ”,„ alt ”:„ przykład-image ”],„ atrybuty ”: [„ name ”:„ Color ”,„ Visible ”: true,„ Variation ”: true,„ opcje ”: [„ czarny ”, „White”], „name”: „rozmiar”, „Visible”: true, „wariacja”: true, „opcje”: [„s”, „m”, „l”] 
Kopiuj

Podaliśmy listę atrybutów za pomocą klucza „Atrybuty” w słowniku produktu. Pierwszy atrybut nazywa się „kolor”, a drugi „rozmiar”. Ustawiliśmy oba, aby były widoczne i oświadczyliśmy, że powinny być używane do odmian, przypisując PRAWDA jako wartość zmiana Klucz w słownikach, które je definiują. Lista powiązana z opcje klucz, zawiera wszystkie możliwe wartości, które mogą przyjąć każde atrybuty.

O atrybutach produktu: możemy użyć obu światowy I nielobalne atrybuty. Jaka jest różnica? Atrybuty określone tylko po nazwie, tak jak to zrobiliśmy w powyższym przykładzie, zostaną utworzone „w locie” dla konkretnego produktu, więc będą „nielobalne”. Jeśli zamierzamy użyć tego samego atrybutu dla kilku produktów, lepiej zdefiniujemy go wcześniej za pomocą określonego wywołania, a następnie odwoływać się do ich identyfikatora. Przypuśćmy, że stworzyliśmy Kolor I Rozmiar Globalne atrybuty i mają one odpowiednio 1 I 2 Jako unikalne identyfikatory pisalibyśmy:

„Atrybuty”: [„id”: 1 „Visible”: true, „wariacja”: true, „opcje”: [„black”, „biały”], „id”: 2, „Visible”: true ”: true: true: true: true: true: true , „wariacja”: true, „opcje”: [„s”, „m”, „l”]] 
Kopiuj

Bardzo ważne: Kod nie utworzy rzeczywistych wariantów produktu, które należy zdefiniować za pomocą osobnych żądań.

Możesz zauważyć, że pominęliśmy, aby zapewnić ilość zapasów produktu, ponieważ całkowita wartość zapasowa będzie reprezentowana przez sumę ilości zapasów każdej wariancji.

Następnym krokiem jest utworzenie rzeczywistych odmian produktu. Podczas definiowania danych wariantów powinniśmy użyć tych samych atrybutów, które zdefiniowaliśmy w żądaniu, którego użyliśmy do utworzenia produktu zmiennego. Oto przykład, jak utworzyć wariację:

produkt_variation_data = „regularny_price”: „18.00 ",„ stock_quantity ”: 10,„ atrybuty ”: [„ id ”: 1,„ opcja ”:„ White ”, „ id ”: 2,„ opcja ”:„ s ”] 
Kopiuj

Zdefiniowaliśmy zmianę wytwarzaną przez kombinację atrybutu koloru „białego” i atrybutu rozmiaru „s”. Ustawiliśmy to normalna cena I wielkość zbiorów. Powinniśmy teraz wysłać żądanie następującym kodem:

Odpowiedź = WCAPI.Post („Produkty/34/wariacje”, produkt_variation_data) 
Kopiuj

Jak widać na fragmencie powyżej, jako punkt końcowy żądania, użyliśmy produkty/34/warianty, Gdzie 34 jest ID produktu nadrzędnego, który wcześniej stworzyliśmy.

Żądanie informacji o wszystkich produktach lub konkretnej

Podobnie jak w przypadku kategorii, możemy żądać informacji o wszystkich istniejących produktach za pośrednictwem interfejsu API REST WooCommerce:

Odpowiedź = WCAPI.Get („Produkty”) 
Kopiuj

Żądanie może być dodatkowo dostosowane poprzez użycie parametry: z na stronę Na przykład parametr możemy określić, ile elementów należy zwrócić w zestawie wyników jednego żądania (domyślnie jest 10) i z strona parametr możemy poprosić o konkretną stronę, która powinna zostać zwrócona (domyślnie jest 1). Aby rozszerzyć liczbę elementów zwróconych w jednym żądaniu, napiszymy:

Odpowiedź = WCAPI.get ('produkty', params = 'per_page': 20) 
Kopiuj

Żądanie informacji o określonym produkcie jest równie proste: wszystko, co musimy zrobić, to określić jego ID W punkcie końcowym żądania:

Odpowiedź = WCAPI.Get („Produkty/34”) 
Kopiuj

Aktualizacja produktu

Logika używana do aktualizacji produktu jest taka sama, której używaliśmy do aktualizacji kategorii (i wszystkich innych „jednostek” zarządzanych za pośrednictwem API REST). Określamy dane produktu, które powinny zostać zaktualizowane i wysyłamy UMIEŚCIĆ żądanie do punktu końcowego, które obejmuje produkt ID:

aktualizate_product_data = "Opis": "To jest zaktualizowany opis produktu zmiennej" response = wcapi.Put („Products/34”, zaktualizowany_product_data) 
Kopiuj

Usuwanie produktu

Aby usunąć produkt, wszystko, co musimy zrobić, to wysłać USUWAĆ żądanie do punktu końcowego, które obejmuje produkt ID:

Odpowiedź = WCAPI.Usuń („Produkty/34”) 
Kopiuj

Tutaj możesz zauważyć, że w przeciwieństwie do tego, co dzieje się w kategoriach, użycie siła Parametr nie jest obowiązkowy. Jeśli parametr nie zostanie używany, produkt zostanie po prostu przeniesiony do „śmieci”, więc możliwe będzie go ostatnio z niego odzyskać. Jeśli siła Parametr jest używany i ustawiony na PRAWDA, Zamiast tego produkt zostanie na stałe usunięty.

Wnioski

W tym samouczku widzieliśmy kilka przykładów interakcji z API WooCommerce REST z językiem programowania Python. Widzieliśmy, jak generować poświadczenia API, jak zainstalować pakiet Python „WooCommerce”, który zapewnia przydatne metody upraszczające kod, który powinniśmy napisać z nimi w interakcji, oraz kilka przykładów tworzenia, czytania, usuwania i aktualizacji kategorii WooCommerce i produktów produktów. Zapoznaj się z oficjalną dokumentacją API WooCommerce REST, aby uzyskać pełny przegląd możliwości API.

Powiązane samouczki Linux:

  • Ubuntu 20.04: WordPress z instalacją Nginx
  • Ubuntu 20.04 WordPress z instalacją Apache
  • Instalacja OpenLitespeed WordPress
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Najlepszy Linux Distro dla programistów
  • Mastering Bash Script Loops
  • Lista najlepszych narzędzi Kali Linux do testowania penetracji i…
  • Użyj WPSCAN, aby skanować WordPress w poszukiwaniu luk w kali
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?