Reklama sponsora

Woocommerce – Atrybuty i warianty



Woocommerce – atrybuty i warianty podstawy

Woocommerce nie bez powodu jest najpopularniejszych rozszerzeniem do WordPressa służącym do stawiania sklepów internetowych. Oprócz podstawowych funkcjonalności takich jak dodawanie, wyświetlanie i możliwość sprzedaży produktów ma także szereg funkcji dodatkowych. Jedną z takich funkcji są atrybuty produktu, na podstawie, których można tworzyć warianty. Możliwość dodawania i zarządzania atrybutami otwiera furtkę na kolejne możliwości jak sortowanie i filtrowanie po atrybutach oraz ustalanie różnych cen dla jednego produktu. Po prostu wachlarz możliwości jest spory, ale jak to ugryźć?

Konfiguracja atrybutów w kokpicie

Aby dodać atrybuty do produktu należy najpierw dodać je w woocommerce. Aby tego dokonać należy wybrać z menu kokpitu Produkty, Atrybuty.

Dodawanie atrybutu

Tutaj sprawa jest dość prosta, w zasadzie wystarczy podać nazwę atrybutu ale można tutaj także zdefiniować bezpośredni odnośnik, aktywować archiwa lub określić sortowanie. W moim przypadku potrzebuję dodać atrybut Pojemność, więc podaję nazwę i klikam „Dodaj atrybut”.

Po dodaniu atrybut powinien się pojawić w tabelce po prawej stronie, tam można kliknąć jego nazwę lub konfigurację taksonomii aby dodać możliwe do wyboru opcje.

atrybuty - lista

Ja na mojej stronie mam cztery flakoniki z perfumami, które występują w trzech wielkościach. Dlatego też dodaję trzy opcje.

Warto zwrócić uwagę że można tutaj także sortować atrybuty metodą przeciągnij i upuść, dzięki czemu będą się wyświetlały później na liście wyboru w produkcie w oczekiwanej kolejności.

Teraz kiedy mamy już zdefiniowane jakieś atrybuty możemy przejść do produktu.

Dodawania atrybutów i wariantów w produkcie

Kolejnym krokiem jest stworzenie wariantów produktów. Aby tego dokonać wchodzimy w wybrany produkt, zmieniamy Dane produktu na Produkt z wariantami , a następnie atrybuty tego produktu. Aby dodać wariant najpierw musimy dodać atrybuty na podstawie których utworzymy warianty, dlatego też taka kolejność jest wymagana.

Dodawanie atrybutów do produktu

Najpierw dodajemy atrybut, który określiliśmy wcześniej w moim przypadku wybieram pojemność i klikam „Dodaj”.

Dodawanie opcji atrybutu

Kolejnym krokiem jest dodanie wariantów atrybuty. W moim przypadku produkt będzie dostępny w trzech wariantach pojemnościowych a więc dodaję wszystkie w tym miejscu i zaznaczam opcję „Dla wariantów”. Klikam zapisz atrybuty i przechodzę do wariantów z menu tego panelu po lewej.

Tutaj możemy po prostu dodać wariant, co zapewne będzie stosowane w większości przypadków lub tak jak w moim przypadku można po prostu utworzyć warianty ze wszystkich atrybutów co oznacza że skoro mam trzy pojemności to zgodnie z tym co wcześniej zaznaczyłem utworzą mi się trzy warianty produktu 15ml, 50ml i 100ml.

Po wybraniu tej drugiej opcji system system zada pytania typu „czy na pewno” w moim przypadku zatwierdzam i idę dalej. Po dodaniu wariantów mam ich listę. W tym miejscu mogę rozwinąć taki wariant i uzupełnić całe mnóstwo opcji dla niego.

Warianty produktu

Tutaj koniecznie trzeba zapisać cenę regularną, jest to wymagane aby produkt był dostępny, należy to uzupełnić i zaktualizować.

No i chyba na tyle jeśli chodzi o atrybuty i warianty w panelu administratora, przynajmniej jeśli chodzi o podstawy podstaw. Teraz wypadałoby coś zakodować.

Jak pobrać atrybuty w kodzie PHP

Ogólnie dopisuję tutaj ciąg dalszy do mojego poprzedniego wpisu dlatego radzę się z nim także zapoznać.

Jeśli chodzi o pobranie wartości atrybutu lub listy nie jest to zbyt skomplikowane. Grunt to wiedzieć jaki atrybut chcemy pobrać jeśli chodzi o jeden z nich, a jego klucz/slug/taxonomię możemy odczytać z linku po wejściu w edycję danego atrybutu.

Link atrybutu

W tym przypadku moja taxonomia to będzie pa_pojemnosc. Te nazwy zazwyczaj zaczynają się od „pa_”. Skoro już to mam przechodzę do kodowania.


$attr_poj = $product->get_attribute( 'pa_pojemnosc' );
echo var_dump($attr_poj);

W ten sposób mogę pobrać atrybut i wyświetlić obiekt, który mi zwrócił.

Obiekt atrybutu

W ten sposób mogę wyświetlić dane warianty atrybutu produktu, czyli to co jest mi potrzebne w moim indywidualnym szablonie produktu.

Ale nic nie stoi nam na drodze żeby wyświetlić wszystkie atrybuty danego produktu, co pewnie będzie częściej wykorzystywane niż pojedynczy atrybut. W tym celu wykorzystujemy funkcję get_attributes(), która zwraca listę atrybutów produktu i tak gdybym chciał listę:


echo json_encode($product->get_attributes());

W ten sposób jedną linijką kodu pobieram i wyświetlam atrybuty w formacie json, ogólnie wolęten format niż var_dump, pewnie z przyzwyczajenia. Otrzymałem następujący wynik:

{„pa_pojemnosc”:{}}

Wykorzystując var_dump otrzymał bym:

array(1) { [„pa_pojemnosc”]=> object(WC_Product_Attribute)#10763 (1) { [„data”:protected]=> array(6) { [„id”]=> int(1) [„name”]=> string(12) „pa_pojemnosc” [„options”]=> array(3) { [0]=> int(18) [1]=> int(16) [2]=> int(17) } [„position”]=> int(0) [„visible”]=> bool(true) [„variation”]=> bool(true) } } }

czyli tablicę obiektów, tak więc przechodząc po elementach tablicy mogę wyświetlić wszystkie atrybuty danego produktu. To by chyba wyczerpywało temat atrybutów teraz czas przejść dalej

Jak pobrać warianty w PHP

W moim projekcie potrzebuję jeszcze informacje o wariantach produktu. Pobranie tych informacji także jest bardzo łatwe.


if ($product->is_type( 'variable' ))
{
$available_variations = $product->get_available_variations();
} else {
$available_variations = null;
}

W powyższym kodzie najpierw sprawdzam czy produkt w ogóle ma jakieś warianty a następnie przypisuję warianty do zmiennej. Ważne aby w panelu była podana cena wariantu inaczej funkcja nie zwróci dostępnych wariantów.

Powyższy kod możemy spokojnie umieścić w listingu produktów wraz z produktami bez wariantów. Dla mojego produktu z atrybutami pojemności otrzymam:

{ [0]=> array(24) { [„attributes”]=> array(1) { [„attribute_pa_pojemnosc”]=> string(5) „15-ml” } [„availability_html”]=> string(51) ”

Brak w magazynie

” [„backorders_allowed”]=> bool(false) [„dimensions”]=> array(3) { [„length”]=> string(0) „” [„width”]=> string(0) „” [„height”]=> string(0) „” } [„dimensions_html”]=> string(4) „brak” [„display_price”]=> float(25) [„display_regular_price”]=> float(25) [„image”]=> array(18) { [„title”]=> string(6) „obraz4” [„caption”]=> string(0) „” [„url”]=> string(64) „https://***/wp-content/uploads/2018/09/obraz4.png” [„alt”]=> string(0) „” [„src”]=> string(64) „https://****/wp-content/uploads/2018/09/obraz4.png” [„srcset”]=> string(148) „https://****/wp-content/uploads/2018/09/obraz4.png 500w, https://***/wp-content/uploads/2018/09/obraz4-300×270.png 300w” [„sizes”]=> string(31) „(max-width: 500px) 100vw, 500px” [„full_src”]=> string(64) „https://***/wp-content/uploads/2018/09/obraz4.png” [„full_src_w”]=> int(500) [„full_src_h”]=> int(450) [„gallery_thumbnail_src”]=> string(72) „https://****/wp-content/uploads/2018/09/obraz4-100×100.png” [„gallery_thumbnail_src_w”]=> int(100) [„gallery_thumbnail_src_h”]=> int(100) [„thumb_src”]=> string(72) „https://***/wp-content/uploads/2018/09/obraz4-300×300.png” [„thumb_src_w”]=> int(300) [„thumb_src_h”]=> int(300) [„src_w”]=> int(500) [„src_h”]=> int(450) } [„image_id”]=> string(2) „71” [„is_downloadable”]=> bool(false) [„is_in_stock”]=> bool(false) [„is_purchasable”]=> bool(true) [„is_sold_individually”]=> string(2) „no” [„is_virtual”]=> bool(false) [„max_qty”]=> string(0) „” [„min_qty”]=> int(1) [„price_html”]=> string(146) „£25.00” [„sku”]=> string(0) „” [„variation_description”]=> string(0) „” [„variation_id”]=> int(91) [„variation_is_active”]=> bool(true) [„variation_is_visible”]=> bool(true) [„weight”]=> string(0) „” [„weight_html”]=> string(4) „brak” } [1]=> array(24) { [„attributes”]=> array(1) { [„attribute_pa_pojemnosc”]=> string(5) „50-ml” } [„availability_html”]=> string(51) ”

….

Czyli tablicę wariantów z całą masą bardziej lub mniej użytecznych informacji. następnie mogę sobie pobrać jakąś interesującą mnie wartość na przykład cenę.


echo $available_variations[0]['display_regular_price'];

Powyższy kod wyświetli cenę pierwszego z wariantów, najlepiej wrzucić je w pętlę i w podobny sposób odnieść się do wszystkich.

To by chyba rozwiązywało większość problemów z atrybutami i wariantami, jeśli się mylę pisz na facebooku

 


Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *