woocommerce cómo obtener $cart_item_key para un solo producto

2 minutos de lectura

Estoy implementando un botón Eliminar artículo junto al botón Agregar al carrito; sin embargo, tengo un problema al obtener la variable $cart_item_key para un solo producto. Tengo las variables globales $woocommerce y $product, pero la única forma en que se usa $cart_item_key es un foreach que no me ayuda en absoluto, ya que necesito que se agregue mi código en add-to-cart.php.

Debe configurar el enlace de eliminación para cada producto dentro de un ciclo como este,

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
 }
} 

En cualquier situación, tiene una lista de artículos del carrito; de eso tienes que quitar, así que foreach trabajará con su requisito.

Espero que sea de ayuda..

  • Esto parece una forma muy ineficiente de lograr esto. Soy consciente de que la estructura de WooCommerce obliga más o menos a este tipo de solución; sin embargo, esencialmente estamos diciendo: “Para cada artículo en el carrito, verifíquelo con todos los demás artículos en el carrito, si es una coincidencia – hacer algo”. Haciendo matemáticas básicas, podemos ver claramente que tenemos que iterar a través de los artículos de nuestro carrito Y squared veces (donde Y es el número de artículos en nuestro carrito). 1 artículo – 2 iteraciones 2 artículos – 4 iteraciones 3 artículos – 9 iteraciones 4 artículos – 16 iteraciones

    – Alex Mulchinock

    6 oct 2016 a las 11:18

avatar de usuario
Sara McLachlane

Este código funcionó para mí. ¡Gracias a Jobin Jose (https://stackoverflow.com/users/1258004/jobin-jose) por la solución!

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="https://stackoverflow.com/questions/20140016/%s" class="remove" title="https://stackoverflow.com/questions/20140016/%s">&times;</a>', esc_url( $woocommerce->cart->get_remove_url( $cart_item_key) ), __( 'Remove this item', 'woocommerce' ) ), $cart_item_key );
}

¿Ha sido útil esta solución?