Woocommerce cena v global $woocommerce

Úvodní stránka Fórum podpory WordPressu Pluginy (funkčnost webu) Woocommerce cena v global $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á 4 roky, 7 měsíců.

Aktuálně je na stránce zobrazeno 9 příspěvků - 1. až 9. (z celkem 9)
  • Autor
    Příspěvky
  • #26732

    endwin
    Participant

    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)

    #26736

    admin
    Keymaster
    Web

    Tak 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…

    #26737

    endwin
    Participant

    Ok… 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?

    #26738

    endwin
    Participant

    Kouam ž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.

    #26745

    endwin
    Participant

    Tak 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);
          }
            
        }      
      
    }
    #26747

    admin
    Keymaster
    Web

    @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á?

    #26756

    endwin
    Participant

    Woocommerce 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

    #26761

    admin
    Keymaster
    Web

    Aha, 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?

    #26768

    endwin
    Participant

    Ano, 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…

Aktuálně je na stránce zobrazeno 9 příspěvků - 1. až 9. (z celkem 9)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.