Dodano 2018-10-12 09:59:20 przez Daniel
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źć?
Aby dodać atrybuty do produktu należy najpierw dodać je w woocommerce. Aby tego dokonać należy wybrać z menu kokpitu Produkty, Atrybuty.
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.
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.
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.
Najpierw dodajemy atrybut, który określiliśmy wcześniej w moim przypadku wybieram pojemność i klikam „Dodaj”.
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.
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ć.
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.
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ł.
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
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
2022-02-12 05:50:51
format for writing dissertation proposals https://helpon-doctoral-dissertations.net/
2022-02-12 04:25:41
dissertation help methodology https://dissertations-writing.org/
2022-02-12 00:44:14
undergraduate dissertation https://mydissertationwritinghelp.com/
2022-02-11 21:44:17
help writting ed.d dissertation https://help-with-dissertations.com/
2022-02-11 17:53:19
doctoral dissertation help 6th https://dissertationwriting-service.com/
2022-02-10 17:42:49
online dissertation writing services https://buydissertationhelp.com/
2022-02-04 14:57:30
myvegas slots https://slotmachinegameinfo.com/
2022-02-04 07:35:40
caesars slots https://411slotmachine.com/
2022-02-04 05:39:58
river slots app https://download-slot-machines.com/
2022-02-04 02:07:45
best time to play slots https://beat-slot-machines.com/
2022-02-03 23:29:48
free poker slots https://slot-machine-sale.com/
2022-02-03 17:20:27
free online slots games https://slotmachinesforum.net/
2022-01-29 09:04:58
free slots for fun https://slotmachinesworld.com/
2022-01-29 05:35:58
free slots instant play https://pennyslotmachines.org/
2022-01-29 00:53:55
free play slots online https://candylandslotmachine.com/
2022-01-28 20:41:42
gsn casino slots https://freeonlneslotmachine.com/
2022-01-28 19:58:49
borderlands map slots https://2-free-slots.com/
2022-01-15 13:06:25
gay dating macho https://speedgaydate.com/
2022-01-14 20:36:58
free gay video chat r https://gay-buddies.com/
2022-01-14 20:08:26
gay danish english chat rooms https://gaytgpost.com/
2022-01-14 16:35:46
gay dating professional bodybuilders https://gaypridee.com/
2022-01-14 11:07:37
gay chat cahurbate https://bjsgaychatroom.info/
2022-01-12 22:12:39
2conditioned