我试图使用以下代码检索Woocommerce 3.X订单中第一个订单项的费用,但只有在订单中有一个产品时才有效,如果有多个产品,它会选择最后一个产品收到成本时,请提出错误建议。
foreach ($order->get_items() as $item_id => $item_data) {
// Get an instance of corresponding the WC_Product object
$product = $item_data->get_product();
$product_name = $product->get_name(); // Get the product name
$product_price = $product->get_price();
$item_quantity = $item_data->get_quantity(); // Get the item quantity
$item_total = $item_data->get_total(); // Get the item line total
// Displaying this data (to check)
}
谢谢!
答案 0 :(得分:0)
foreach()语句为数组或对象集合中的每个元素重复一组嵌入式语句。
在每次迭代中,它都会访问每个项目,因此在循环结束时,您将获得最后一项的成本。
为了返回第一项的费用,请在foreach()break;
结束之前添加。
foreach ($order->get_items() as $item_id => $item_data) {
.
.
break;
}
这样,foreach()只会重复第一项。
答案 1 :(得分:0)
您可以使用reset()
php函数仅保留订单项数组中的第一个$项,避免使用foreach循环:
$order_items = $order->get_items(); // Get the order "line" items
$item = reset($order_items); // Keep the 1st item
// Get an instance of the WC_Product object
$product = $item->get_product();
$product_name = $product->get_name(); // Get the product name
$product_price = $product->get_price(); // Get the product active price
$item_quantity = $item->get_quantity(); // Get the item quantity
$item_total = $item->get_total(); // Get the item line total
// Displaying the cost of the first item
echo $item_total;
经过测试和工作