在购物车Wordpress中获取产品的SKU

时间:2017-04-19 13:39:26

标签: php wordpress

我试图获取购物车中所有产品的SKU。 在过去,我尝试过与产品名称类似的东西。我是这样做的:

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

有没有这样的方式,而不是标题获得产品的SKU?

编辑:

我尝试了Thoby的方式:

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();
} 

但是我收到了一个错误:

  

致命错误:调用未定义的方法WP_Post :: get_sku()

3 个答案:

答案 0 :(得分:3)

我相信这可能对你有帮助 -

$_product->get_sku();

它适用于产品循环,您可以在购物车/结帐/等中使用它。

答案 1 :(得分:3)

尝试:

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(); 
}

官方WooCommerce API文档:wc_get_product()

答案 2 :(得分:1)

我认为您已经可以访问$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());     
}