我需要对文件 order-details-item.php 进行某些更改 产品价格是在自定义元字段中形成的。所以在我的例子中,该值是: $qty = $item->get_quantity();是不正确的。总是一样的。
为了解决这个问题,我可以使用最简单的arephmetic操作。将订单总价除以产品价格。例如,如果客户以每公斤 14.5 的成本订购 10 公斤苹果,则总成本将为 145。这意味着为了正确显示数量,我需要 145/10。
$price_weight_array = $product_attr['_mia_cup_price_weight'];
$price_unit_array = $product_attr['_mia_cup_price_unit'];
$sale_price_array = $product_attr['_mia_cup_sale_price_unit'];
$price_weight = $price_weight_array[0];
$price_unit = $price_unit_array[0];
$sale_price = $sale_price_array[0];
$prod_item_total = $order->get_formatted_line_subtotal();
custom_quantity = $prod_item_total / $price_weight
问题是 $order->get_formatted_line_subtotal();返回一个带有货币符号的数字。而且我不能在算术运算中使用它。我怎样才能删除这个符号?
get_formatted_line_subtotal()
方法需要强制参数才能工作,并且如您所知,显示格式化订单项小计(带有货币符号)...
基于如何获取 WooCommerce 订单详细信息和在 WooCommerce 3 中获取订单商品和 WC_Order_Item_Product,您首先需要获取订单商品,然后在 foreach 循环中使用您的代码。
要获取非格式化且非舍入的订单项小计,您将使用 get_line_subtotal() 方法,如下所示:
$order = wc_get_order($order_id); // (optional - if needed) get the WC_Order object
// Loop through order items
foreach( $order->get_items() as $item_id => $item ) {
$product = $item->get_product(); // get the WC_Product Object
// Your other code (missing from your question) Here …
$price_weight = reset($product_attr['_mia_cup_price_weight']);
$price_unit = reset($product_attr['_mia_cup_price_unit']);
$sale_price_unit = reset($product_attr['_mia_cup_sale_price_unit']);
// Get the non formatted order item subtotal (and not rounded)
$item_subtotal = $order->get_line_subtotal( $item, $order->get_prices_include_tax(), false );
$custom_quantity = $item_subtotal / $price_weight;
}
应该会更好用