2014-04-02 14 views
6

Witaj,WooCommerce - Wybierz wybraną odmianę produktu w koszyku

Dowolny pomóż mi znaleźć rozwiązanie.

Mój klient prowadzi działalność hurtową, w której nie potrzebuje funkcji kasy woocommerce. On potrzebuje funkcjonalności woocommerce do koszyka, ale zamiast kasy chce mieć przycisk "Złóż zamówienie".

Teraz wszystko działa poprawnie, kolejność wprowadzania prawidłowo, zamówienie jest przechowywanie w bazie danych i korespondencji do administratora, ale problemem jest to, że chcę, aby przechowywać wariacje jak dobrze, moje pytanie jest jak dostać wybrany wariant (jeśli istnieje)produktu wewnątrz funkcji functions.php dla tego produktu, który jest już w koszyku?

Każda wskazówka będzie bardzo doceniana.

Odpowiedz

1

Nadzieja ta pomoże ...

function woocommerce_variable_add_to_carts() { 
     global $product, $post; 
     $variations = $product->get_available_variations(); 
     foreach ($variations as $key => $value) { 
      ?> 
      <form action="<?php echo esc_url($product->add_to_cart_url()); ?>"method="post" enctype='multipart/form-data'> 
       <input type="hidden" name="variation_id" value="<?php echo $value['variation_id'] ?>" /> 
       <input type="hidden" name="product_id" value="<?php echo esc_attr($post->ID); ?>" /> 
       <?php 
       if (!empty($value['attributes'])) { 
        foreach ($value['attributes'] as $attr_key => $attr_value) { 
         ?> 
         <input type="hidden" name="<?php echo $attr_key ?>" value="<?php echo $attr_value ?>"> 
         <?php 
        } 
       } 
       ?> 

       <?php echo implode('/', $value['attributes']); ?> 

       <?php echo $value['price_html']; ?> 
       </ 
       <button type="submit" class="single_add_to_cart_button button alt"><?php echo apply_filters('single_add_to_cart_text', __('Add to cart', 'woocommerce'), $product->product_type); ?></button> 

      </form> 
      <?php 
     } 
    } 
10

nadzieję, że już zrozumiał zapytanie poprawnie.

Mówisz, że chcesz uzyskać szczegółowe odmiany produktu (jeśli jest dostępny), który znajduje się w koszyku.

Koszyk zawiera wiele przedmiotów. Możesz zamieniać w pętlę przedmioty o numerach &, aby uzyskać szczegółowe informacje na temat poszczególnych elementów.

Element koszyk jest tablica asocjacyjna & można znaleźć identyfikator produktu w $item['product_id'] & zmienności id w $item['variation_id']

Proszę użyć następujących funkcji & przebieg zmienności id dostać szczegół zmienności:

function get_variation_data_from_variation_id($item_id) { 
    $_product = new WC_Product_Variation($item_id); 
    $variation_data = $_product->get_variation_attributes(); 
    $variation_detail = woocommerce_get_formatted_variation($variation_data, true); // this will give all variation detail in one line 
    // $variation_detail = woocommerce_get_formatted_variation($variation_data, false); // this will give all variation detail one by one 
    return $variation_detail; // $variation_detail will return string containing variation detail which can be used to print on website 
    // return $variation_data; // $variation_data will return only the data which can be used to store variation data 
} 

Teraz zobacz, jak korzystać z tej funkcji

$item_id = (!empty($cart_item['variation_id'])) ? $cart_item['variation_id'] : ''; 
if (!empty($item_id)) { 
    $variations = get_variation_data_from_variation_id($item_id); 
} 

Mam nadzieję, że przyda się.

+1

Dziękuję @Ratnakar, Twój komentarz "Element koszyka jest tablicą asocjacyjną" pomógł mi. –

Powiązane problemy