Искал как вытянуть стоимость позиций товара из заказа в woocommerce. А в итоге обнаружил неточность в документации плагина.
Если вы располагаете идентификатором заказа, который по сути является posd_id, то алгоритм получения данных о строках заказа следующий:
1 2 |
$order = new WC_Order($order_id); $items = $order->get_items(); |
Переменная $items — это массив объектов, и расхождение с документацией заключается в том, какого класса эти объекты. В документации утверждается, что это объекты WC_Order_Item, но на самом деле функция возвращается объекты дочернего класса — WC_Order_Item_Product, который предоставляет больше возможностей.
Объект позволяет получить только общую стоимость в строке get_total(), потому цену (price) за единицу товара придется посчитать вручную:
1 2 3 4 5 6 7 8 9 |
foreach ($items as $item) { $row = array( 'name' => $item->get_name('edit'), 'quantity' => $item->get_quantity('edit'), 'sum' => $item->get_total('edit'), 'price' => $item->get_total('edit') / $item->get_quantity('edit'), ); ... } |