web-dev-qa-db-fra.com

Obtenez dans le panier WooCommerce l'ID produit d'un article du panier

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

J'ai le code ci-dessus.

si je lance print_r sur cart_item, j'obtiens un tableau multidimensionnel:

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

Comment puis-je obtenir le product_id uniquement?

J'ai essayé $ test = $cart_item['data'];

print_r($test);

Ça n'a pas marché.

11
Kevin.a

Pour obtenir le product ID de chaque article du panier dans la boucle foreach (pour un produit simple):

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

S'il s'agit d'un produit variable, pour obtenir le variation ID:

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

Ou dans les deux cas (où$cart_item['data'] est leWC_Product Objet dans 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
    }
}

Mise à jour: Utilisation de l'ID produit en dehors de la boucle

1) Briser la boucle (Juste pour obtenir le premier ID d'article (ID de produit) du panier):

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

Vous pouvez utiliser directement la variable $product_id Du premier article du panier.


2) Utilisation d'un tableau d'ID de produit (un pour chaque article dans le panier).

$products_ids_array = array();

foreach( WC()->cart->get_cart() as $cart_item ){
    $products_ids_array[] = $cart_item['product_id'];
}
  • Pour obtenir l'ID de produit du premier article: $products_ids_array[0];
  • Pour obtenir l'ID produit du 2ème article: $products_ids_array[1]; etc…

Pour vérifier les catégories de produits ou les balises de produits dans l'article du panier, utilisez WordPress has_term() comme:

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

Nous utilisons toujours $cart_item['product_id'] Car nous obtenons le produit variable parent lorsqu'un article du panier est une variation de produit.

Les variations de produits ne gèrent aucune taxonomie personnalisée en tant que catégories de produits et étiquettes de produits

26
LoicTheAztec