对于一个已下订单且该订单有3个产品的订单,我需要获取一种格式如下的数据结构:
[items] => Array
(
[0] => Array
(
[sku] => Product 1 sku
[qty] => Product 1 qty
[price] => Product 1 price
[weight] =>
[discount] =>
[line_ref] =>
)
[1] => Array
(
[sku] => Product 2 sku
[qty] => Product 2 qty
)
[2] => Array
(
[sku] => Product 3 sku
[qty] => Product 3 qty
)
)
这是我的代码:
$order = new WC_Order( $order_id );
// Get the order ID
$order_id = $order->get_id();
// Get data from Items
foreach ( $order->get_items() as $item_key => $item_values ) {
$product_id = $item_values->get_product_id(); // the Product id
$product = $item_values->get_product(); // the WC_Product object
$item_data = $item_values->get_data();
$item = array(array(
'sku' => $product->get_sku(),
'qty' => $item_data['quantity'],
'price' => $product->get_price(),
'weight' => '',
'discount' => '',
'line_ref' => ''
),
array(
'sku' => $product->get_sku(),
'qty' => $item_data['quantity'],
)
);
}
print_r($item);
我该如何实现?
我正在获得订单中第一个产品的唯一数据。 如果我做print_r($ item);在foreach循环中,然后根据订单中产品的数量重复整个数据。
答案 0 :(得分:0)
尝试以下
// Get an instance of the order Object
$order = wc_get_order( $order_id );
// Get the order ID
$order_id = $order->get_id();
// Initialising
$items_data = array();
$count = 0;
// Loop through Order items
foreach ( $order->get_items() as $item_id => $item ) {
$product_id = $item->get_product_id(); // the Product id
$product = $item->get_product(); // the WC_Product object
$item_data = $item->get_data(); // The line item unprotected data (array)
if( $count === 0 ) {
$items_data[] = array(
'sku' => $product->get_sku(),
'qty' => $item->get_quantity(),
'price' => $product->get_price(),
'weight' => '',
'discount' => '',
'line_ref' => ''
);
} else {
$items_data[] = array(
'sku' => $product->get_sku(),
'qty' => $item->get_quantity(),
);
}
$count++;
}
$output = array('items' => $items_data );
// Testing output
print_r($output);
它应该更好地发挥作用。