在 Woocommerce 中获取订单标题

Get order title(s) in Woocommerce

我试图通过我的 functions.php 文件循环获取订购产品的名称。这是我的代码:

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

foreach($items as $item => $values) { 
    $_product = $values['data']->post; 
} 

然后我这样命名标题:

$_product->post_title

这行得通,它 returns 我订购的产品名称。问题是当我有 2 个或更多产品时它仍然 returns 我 1 个名字。我怎样才能做到 returns 购物车中的所有名称。

<?php
    global $woocommerce;
    $items = $woocommerce->cart->get_cart();
    $arr_product=array();
        foreach($items as $item => $values) {             
           $arr_product[]= $_product->post_title;            
        } 
    print_r($arr_product,true); // echo print_r(); thats why get 1
?>

woocommerce 中相对于购物车的新语法是使用 WC() 生成的,无需调用 global woocommerce;

所以你的代码将是这样的:

$products_in_cart= array();
$products_post_title_in_cart = array();
$products_ids_in_cart= array();

foreach(WC()->cart->get_cart() as $cart_item) {
    $products_in_cart[] = $cart_item['data']->post;
    $products_post_title_in_cart[] = $cart_item['data']->post->post_title;
    $products_ids_in_cart[] = $cart_item['product_id'];
}

// The first product (or item of the cart)
$_product = $products_in_cart[0]; // product post data
$product_id = $products_ids_in_cart[0]; // product ID
$products_post_title_in_cart[0] // product post title

// The Second product (or item of the cart)
$_product = $products_in_cart[1]; // product post data
$product_id = $products_ids_in_cart[1]; // product ID
$products_post_title_in_cart[1] // product post title

// etc … for all other products you increase the key of the arrays to get the correct values

试试这个代码,returns 购物车中的所有名称。

global $woocommerce; 

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

echo "<pre>";
print_r($cart_item);

exit();