Úvodní stránka › Fórum podpory WordPressu › Pluginy (funkčnost webu) › Woocommerce cena v global $woocommerce
Štítky: Košík, Varianty, WC_Cart(), WooCommerce
Zvolené téma obsahuje celkem 8 odpovědí. Do diskuze (2 účastníci) se naposledy zapojil uživatel endwin a poslední změna je stará 8 let, 1 měsíc.
-
AutorPříspěvky
-
25. února 2016 (15:40) #26732
Zdravim.
Chci se zeptat… nevíte někdo, jestli cena která se nahodí do global proměnné$woocommerce
při přidání položky do košíku, je volaná nějakou funkcí, a nebo jestli se načítá z nějakého inputu na stránce produktu?
Nějak se mi to nedaří zjistit.
Předem děkuji.(snažim se udělat sumarizaci ceny dle jednotlivých cen vybraných variant)
25. února 2016 (21:41) #26736Tak tady nevím, zda to správně chápu, ale pro košík je určena přímo třída WC_Cart(), kde můžete použít třeba funkci get_cart() a dostanete obsah košíku, ze kterého si už vytáhnete vše potřebné?
Ale zkuste spíše podrobněji popsat, o co se snažíte a klidně přiložit příslušný kus kódu…
25. února 2016 (21:49) #26737Ok… celé…:-D Na stránce produktu sčítam ceny variant. Protože to wc neumožnuje. Nahradil jsem všechny příslušné hodnoty ceny ve stránce na novou hodnotu.
Ale následně když to přidam do košíku, propíše se tam cena jen jedné varianty…
Trochu se v tom teď hrabu a zdá se mi že by mohlo stačit nahradit pár filtrů…echo apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key );
a možná i:
echo apply_filters( 'woocommerce_cart_item_subtotal', WC()->cart->get_product_subtotal( $_product, $cart_item['quantity'] ), $cart_item, $cart_item_key );
Jak korektně nahradim tyhle filtry?
25. února 2016 (22:03) #26738Kouam že jsem to napsal trochu nesrozumitelně… Produkt se dvema selectama jako varianty. Kazda varianta vlastni cenu. Jenze tahle sumacni cena neni v db… A do kosiku se propise variation_id jen z jednoho selectu… ne z obou…
takze jen cena z odpovidajici produktu s variation_id… A ja v kosiku potrebuju zobrazit sumacni cenu.26. února 2016 (12:57) #26745Tak vyreseno.:-D
Tohle secte ceny variant a zobrazi v kosiku.
Pro stranku produktu je zapotrebi mensi js ale ten si urcite kazdej zvladne udelat.:-)/* Funkce provadejici sumaci zvolenych variant */ function my_suma_cart_price( $price, $cart_item){ if( !empty($cart_item['variation_id']) ){ $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key ); $array = get_product( $product_id, true ); $array = $array->get_available_variations(); $variations = $cart_item['variation'] ; $price=0; foreach( $array as $key => $val ){ foreach( $variations as $var_key => $var_val ){ if( $val['attributes'][$var_key]==$var_val ){ $price+=$val['display_price']; } } } } return $price; } /* Zobrazeni Sumace ceny v kosiku */ add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' ); function add_custom_price( $cart_object ) { // Prochazeni produktu v kosiku foreach ( $cart_object->cart_contents as $key => $value ) { // Pokud ma varianty zavola funkci sumace a vrati hodnotz if ( !empty($value['variation_id']) ) { $price=$value['data']->price; $value['data']->price = my_suma_cart_price( $price, $value); } } }
26. února 2016 (13:56) #26747@endwin: Díky, určitě by se někomu hodil i ten menší JavaScript :-)
Bohužel to ale asi pořád úplně nechápu. Pokud máte na stránce produktu možnost volby nějaké varianty (a jsou tam různé dropdowny podle definovaných vlastností), tak můžete ale zvolit pouze jednu variantu na základě těchto vlastností? A když zvolenou variantu přidáte do košíku, tak tam je správná cena? Nebo mi něco uniká?
26. února 2016 (15:24) #26756Woocommerce bere cenu z db… To znamena ze se musej definovat vsechny kombinace ktere chcete mit jinak cenove nez nejaky default ktery nastavite…
Takze pri pouzivani tohohle kodu, napisete ke kazde variante primo jeji cenu a jejim nakombinovanim s dalsim vyberem vlastnosti se pricita ruzne velka cena.
uvedu priklad.
budu prodavat tricka.Latka tricka:
–Bavlna
–Bambus
–PVC (no co je to jen priklad :-D )Velikost potisku:
dejme tomu treba 20 variant na vybrani.Tak a ted misto toho abych nastavoval cenu pro vsechny mozne kombinace (3*20), udelam jen to ze do variant vlozim kazdou variantu 1x (3+20) s tim ze druhou moznost necham jako [vsechny].
A kazde nastavim vlastni cenu.A zobrazena cena se mi zobrazi jako soucet cen vybrane Latky + Velikosti potisku.
Javascript jeste pridam.:-D A tohle je jen kod pro kosik/objednavku
26. února 2016 (18:00) #26761Aha, už to asi začínám chápat… Takže velikost potisku vlastně není varianta? Nebo vlastně když vytváříte varianty, tak tam přidáte následující kombinace?
Bavlna – Všechny velikosti
Bambus – Všechny velikosti
PVC – Všechny velikosti
Všechny látky – Velikost 1
Všechny látky – Velikost 2
…Nebo jsem zase mimo? :-) Ani jsem nevěděl, že je něco takového možné… A neexistuje na to žádný plugin? Protože mi přijde, že to může být docela častý problém a správci eshopů by to určitě občas využili?
26. února 2016 (19:43) #26768Ano, spravne.:-)
No nic se mi najit nepodarilo… nebo jsem to spatne vyhledaval… ja a moje anglictina… obcas mam problem formulovat spravny dotaz…
Mozna je to v nejakym placenym pluginu… ty skoro vzdy preskakuju… -
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.