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.
5
A
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 ..
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">×</a>', esc_url($woocommerce->cart->get_remove_url($cart_item_key)), __('Remove this item', 'woocommerce')), $cart_item_key);
}
grazie! Funziona! Proprio la cosa che stavo cercando! –
siete i benvenuti :) –
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 –