J'essaie d'obtenir le SKU de tous les produits de mon panier. Dans le passé, j'ai essayé quelque chose de similaire avec les noms de produits. Je l'ai fait comme ça:

global $woocommerce;
$items = $woocommerce->cart->get_cart();
$product_names=array();
foreach($items as $item => $values) { 
    $_product = $values['data']->post; 
    $product_names[]=$_product->post_title; 
} 

Existe-t-il un moyen comme celui-ci, mais au lieu du titre, obtenir le SKU d'un produit?

ÉDITER:

J'ai essayé la manière de Thoby comme ceci:

global $woocommerce;
$items = $woocommerce->cart->get_cart();
$product_names=array();
$productsku=array();
foreach($items as $item => $values) { 
    $_product = $values['data']->post; 
    $product_names[]=$_product->post_title;
    $productsku[]=  $_woo_product->get_sku();
} 

Mais j'obtiens une erreur:

Erreur fatale: appel à la méthode non définie WP_Post :: get_sku ()

1
Kevin.a 19 avril 2017 à 16:39

3 réponses

Meilleure réponse

Essayez:

global $woocommerce;
$items = $woocommerce->cart->get_cart();
$product_names = array();

foreach($items as $item => $values) { 

    // Retrieve WC_Product object from the product-id:
    $_woo_product = wc_get_product( $values['product_id'] );

    // Get SKU from the WC_Product object:
    $product_names[] = $_woo_product->get_sku(); 
}

La documentation officielle de l'API WooCommerce: wc_get_product ()

3
Thoby 19 avril 2017 à 13:46

Je suppose que vous avez déjà accès à $cart

$cart_items = $cart->get_cart_contents();
$skus = array(); 

foreach($cart_items as $cart_item) {     

 // Get WC_Product by Variation ID, if not avaiable use Product ID
 $product = wc_get_product($cart_item["variation_id"] ? $cart_item["variation_id"] : 
 $cart_item["product_id"]);

 // Add new SKU to array
 array_push($skus, $product->get_sku());     
}
1
optimiertes 23 déc. 2019 à 13:03

Je crois que cela pourrait vous aider

$_product->get_sku();

Il fonctionne avec des boucles de produits et vous pouvez l'utiliser dans votre panier / caisse / etc.

3
Netanel Perez 19 avril 2017 à 13:45