我需要对文件order-details-item.php进行某些更改产品价格是在自定义元字段中形成的。所以在我的情况下,值是:$qty=$item->get_quantity((;不正确。它总是一样的。
为了解决这个问题,我可以使用最简单的模拟操作。将订单总价除以产品价格。例如,如果一位顾客以每公斤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订单详细信息和在WooCommCommerce 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;
}
它应该更好地工作