Mostrar ID de producto y product_item_key en el carrito de WooCommerce

30 jul 2018, 09:17:14
Vistas: 13.8K
Votos: 1

¿Cómo puedo mostrar el ID de producto y product_item_key de cada artículo del carrito en lugar del conteo total?

function iconic_cart_count_fragments( $fragments ) {

    $fragments['div.header-cart-count'] = '<div class="header-cart-count">' . WC()->cart->get_cart_contents_count() . '</div>';

    return $fragments;

}

Gracias

0
Todas las respuestas a la pregunta 2
2

Techno Deviser, probablemente por error, en el bucle foreach asignó el valor a $fragments['div.header-cart-count'] en lugar de concatenarlo.

Prueba esta modificación:

function iconic_cart_count_fragments( $fragments ) {

     foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { 
        $fragments['div.header-cart-count'] .= '<div class="header-cart-count">' .$cart_item_key.'<br><br>'. $cart_item['product_id']. '</div>'; 
     } 
     return $fragments; 
} 

O:

function iconic_cart_count_fragments( $fragments ) {

     $cart = WC()->cart->get_cart();
     if (!empty($cart)) {
         foreach ( $cart as $cart_item_key => $cart_item )
            $output .= $cart_item_key. ' - ' . $cart_item['product_id'] . '<br>';
         $fragments['div.header-cart-count'] = '<div class="header-cart-count">' . $output . '</div>'; 
     }
     return $fragments; 
} 
30 jul 2018 12:57:56
Comentarios

@JyotiSharma Acabo de revisar el segundo ejemplo del código anterior. Si tengo 2 productos diferentes en el carrito y hago clic en "añadir al carrito" en el siguiente, el div.header-cart-count en la respuesta JSON tiene 3 pares clave/valor.

nmr nmr
30 jul 2018 21:46:25

sí, tienes razón, ¡gracias! todo funciona bien, cierro este tema ahora.

Jyoti Sharma Jyoti Sharma
31 jul 2018 06:37:39
9

Prueba algo como esto

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

echo $cart_item_key;
echo $cart_item['product_id'];
}

O

foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
echo $cart_item_key;
echo $cart_item['product_id'];
}

O

    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
 $fragments['div.header-cart-count'] = '<div class="header-cart-count">' .$cart_item['product_id']. '</div>'; 
 }

Esto te dará los IDs de los productos, en lugar de tu salida actual.

Solución final funcional.

 global $woocommerce; 
 add_filter( 'woocommerce_add_to_cart_fragments', 'iconic_cart_count_fragments', 10, 1 ); 
 function iconic_cart_count_fragments( $fragments ) {
     foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { 
     $fragments['div.header-cart-count'] = '<div class="header-cart-count">' .$cart_item_key.'<br><br>'. $cart_item['product_id']. '</div>'; 
     return $fragments; 
     } 

     } 
30 jul 2018 11:00:13
Comentarios

Ya lo intenté de esa manera pero después el frontend queda completamente en blanco.

Jyoti Sharma Jyoti Sharma
30 jul 2018 11:22:10

Código del archivo function.php add_filter( 'woocommerce_add_to_cart_fragments', 'iconic_cart_count_fragments', 10, 1 );

function iconic_cart_count_fragments( $fragments ) {

$fragments['div.header-cart-count'] = '<div class="header-cart-count">' . foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {

echo $cart_item_key; echo $cart_item['product_id']; } . '</div>';

return $fragments;

}

Jyoti Sharma Jyoti Sharma
30 jul 2018 11:22:39

Lo estás haciendo mal

Techno Deviser Techno Deviser
30 jul 2018 11:23:58

¿Cuál es la forma correcta? Mi objetivo es mostrar cada item_id y item_key del carrito después de que se active el ajax para agregar al carrito en la página de categoría/inicio

Jyoti Sharma Jyoti Sharma
30 jul 2018 11:27:26

Prueba la solución del último paso

Techno Deviser Techno Deviser
30 jul 2018 11:40:16

Solo estoy dando una respuesta de acuerdo a tu pregunta, dentro de tu función.

Techno Deviser Techno Deviser
30 jul 2018 11:42:10

muchas gracias, está funcionando exactamente como quiero.

global $woocommerce; add_filter( 'woocommerce_add_to_cart_fragments', 'iconic_cart_count_fragments', 10, 1 );

function iconic_cart_count_fragments( $fragments ) { foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { $fragments['div.header-cart-count'] = '<div class="header-cart-count">' .$cart_item_key.'<br><br>'. $cart_item['product_id']. '</div>';

} return $fragments; }

Jyoti Sharma Jyoti Sharma
30 jul 2018 12:18:31

No hay problema. Lo marco como respuesta resuelta

Techno Deviser Techno Deviser
30 jul 2018 12:28:44

gracias, pero disculpa, solo muestra el valor de un producto aunque haya muchos en el carrito quiero mostrar todos los IDs de producto y claves de item del carrito

Jyoti Sharma Jyoti Sharma
30 jul 2018 12:40:44
Mostrar los 4 comentarios restantes