从 WooCommerce 中的 $order->get_formatted_line_subtotal() 获取非格式化值

问题描述 投票:0回答:1

我需要对文件 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();返回一个带有货币符号的数字。而且我不能在算术运算中使用它。我怎样才能删除这个符号?

php wordpress woocommerce orders
1个回答
0
投票

您的代码不完整,您没有使用正确的方法...另外,

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;
}

应该会更好用

© www.soinside.com 2019 - 2024. All rights reserved.