Obtenga en el carrito de WooCommerce la identificación del producto de un artículo del carrito

$cart_item = $woocommerce->cart->get_cart(); 

Tengo el código anterior.

si ejecuto print_r en cart_item obtengo una matriz multidimensional:

 Array( [a6292668b36ef412fa3c4102d1311a62] => Array ( [product_id] => 6803 

¿Cómo consigo el product_id solamente?

Intenté $ test = $cart_item['data'];

 print_r($test); 

No funciono

Para obtener el product ID de product ID de cada artículo del carrito en el bucle foreach (para un producto simple):

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

Si es un producto variable, para obtener el variation ID :

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

O para ambos casos (donde $cart_item['data'] es el objeto WC_Product en Woocommerce 3+) :

 foreach( WC()->cart->get_cart() as $cart_item ){ // compatibility with WC +3 if( version_compare( WC_VERSION, '3.0', '< ' ) ){ $product_id = $cart_item['data']->id; // Before version 3.0 } else { $product_id = $cart_item['data']->get_id(); // For version 3 or more } } 

Actualización: usando la identificación del producto fuera del bucle

1) Rompiendo el bucle (solo para obtener el primer ID de artículo (ID de producto) del carrito) :

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

Puede usar directamente la variable $product_id del primer artículo en el carrito.


2) Utilizando una serie de ID de productos (uno para cada artículo en el carrito) .

 $products_ids_array = array(); foreach( WC()->cart->get_cart() as $cart_item ){ $products_ids_array[] = $cart_item['product_id']; } 
  • Para obtener el ID del producto del primer artículo: $products_ids_array[0];
  • Para obtener el ID del producto del segundo artículo: $products_ids_array[1]; etc …

Para verificar las categorías de productos o las tags de productos en el artículo del carrito, use WordPress has_term() como:

 foreach( WC()->cart->get_cart() as $cart_item ){ // For product categories (term IDs, term slugs or term names) if( has_term( array('clothing','music'), 'product_cat', $cart_item['product_id'] ) ) { // DO SOMETHING } // For product Tags (term IDs, term slugs or term names) if( has_term( array('clothing','music'), 'product_tag', $cart_item['product_id'] ) ) { // DO SOMETHING ELSE } } 

Siempre usamos $cart_item['product_id'] ya que obtenemos el producto de la variable principal cuando un artículo del carrito es una variación del producto.

Las variaciones de productos no manejan ninguna taxonomía personalizada como categorías de productos y tags de productos