2014-04-02 21 views
6

Ciao,WooCommerce - Ottieni la variazione selezionata per un prodotto nel carrello

Qualcuno per favore aiutami a trovare la soluzione.

Il mio cliente ha un'attività di vendita all'ingrosso, in cui non ha bisogno della funzionalità di checkout di woocommerce. Ha bisogno di funzionalità di woocommerce fino al carrello, ma invece di checkout vuole un pulsante "Effettua ordine".

Ora, tutto funziona bene, di ordinare in modo corretto, l'ordine memorizza nel database e la spedizione di amministrazione, ma il problema è che voglio per memorizzare variazioni così, la mia domanda è come ottenere variazioni selezionato (se ce ne sono)di un prodotto all'interno di functions.php per quel prodotto, che è già nel carrello?

Qualsiasi suggerimento sarà molto apprezzato.

risposta

1

Spero questo vi aiuterà ...

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

Speranza che ho capito bene la vostra richiesta.

Stai dicendo che vuoi ottenere i dettagli delle variazioni (se disponibili) del prodotto, che è lì nel carrello.

Il carrello contiene molti articoli. È possibile eseguire il loop sugli articoli & in modo da ottenere i dettagli della variazione di ciascun articolo.

Un elemento della spesa è un array associativo & si possono trovare prodotti id $item['product_id'] & variazione id in $item['variation_id']

Utilizzare seguente funzione & passaggio variazione id per ottenere la variazione dettaglio:

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 
} 

Ora diamo vedere come utilizzare questa funzione

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

Spero che sarà utile.

+1

Grazie @Ratnakar, il tuo commento "Un carrello è un array associativo" mi ha aiutato. –

Problemi correlati