2013-11-22 15 views
5

Sto implementando un pulsante Rimuovi elemento accanto al pulsante Aggiungi al carrello, tuttavia ho un problema a ottenere la variabile $ cart_item_key per un singolo prodotto. Ho le variabili globali $ woocommerce e $ product ma l'unico modo in cui $ cart_item_key è usato è un foreach che non mi aiuta affatto perché ho bisogno che il mio codice sia aggiunto in add-to-cart.php.

risposta

9

È necessario impostare il link Rimuovi per ogni prodotto all'interno del ciclo come questo,

foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item) { 

echo $cart_item_key; 
if($cart_item['product_id'] == $your_product_id_to_remove){ 
    //remove single product 
} 
} 

In qualsiasi situazione si dispone di carrello voce messa in vendita; da questo devi rimuovere, quindi foreach funzionerà con i tuoi requisiti.

Speranza la sua aiuta ..

+0

grazie! Funziona! Proprio la cosa che stavo cercando! –

+0

siete i benvenuti :) –

+1

Questo sembra un modo molto inefficiente per raggiungere questo obiettivo. Sono consapevole che la struttura di WooCommerce più o meno costringe questo tipo di soluzione, tuttavia, stiamo essenzialmente dicendo: "Per ogni articolo nel carrello, confrontalo con tutti gli altri articoli nel carrello, se è una partita - fai qualcosa ". Facendo matematica di base, possiamo vedere chiaramente che dobbiamo iterare attraverso i nostri articoli cart 'Y al quadrato' volte (dove Y è il numero di articoli nel nostro carrello). 1 elemento - 2 iterazioni 2 articoli - 4 iterazioni 3 voci - 9 iterazioni 4 voci - 16 iterazioni –

2

Questo codice ha funzionato per me. Grazie a Jobin Jose (https://stackoverflow.com/users/1258004/jobin-jose) per la soluzione!

foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item) { 
    if ($cart_item['product_id'] == $product->id) { 
     echo apply_filters('woocommerce_cart_item_remove_link', sprintf('<a href="%s" class="remove" title="%s">&times;</a>', esc_url($woocommerce->cart->get_remove_url($cart_item_key)), __('Remove this item', 'woocommerce')), $cart_item_key); 
} 
Problemi correlati