首页 文章

从格式化价格中提取WooCommerce中的计算数量

提问于
浏览
1

我正在使用Ewout Fernhout的插件WooCommerce PDF Invoices & Packing Slips开发自定义发票模板,当我想在发票上创建更详细的产品列表时,我遇到了问题 .

默认模板中有一个foreach循环,显示订单中的所有产品:

$items = $this->get_order_items(); 

if( sizeof( $items ) > 0 ) : 

foreach( $items as $item_id => $item ) :

在那之后,我想根据 $items 计算折扣金额,以欧元和%表示 . 我抛弃了内容,发现产品价格在 $item['price'] (string(119) ),原价在 $item['product']->price (string(3)) . 我可以回显 $item['price'] 的值,但是当我想从子串中获得 $item['price'] (例如从250.00€)的价格时,它是无用的,返回什么都没有或函数的长度值 . (使用第二个变量 - $item['product']->price ,我没有问题)...

$price = $item['price'];
echo $price.'
'; echo strlen($price).'
'; echo substr($price,0,10).'
'; echo strlen(trim(substr($price,0,10))).'
';

它显示:

250.00€119 10

(如果我在子字符串中写入10或2并不重要,则第一次出现的子字符串将返回长度值) . 我试过参考,但它既不起作用......

可能是根本原因是什么?

谢谢

1 回答

  • 0

    Update:

    要直接获得非格式化价格,您可以使用:

    1)对于订单行项目,您可以获取WC_Order_Item_Product对象:

    $item_data     = $item['item']->get_data();
    $quantity      = $item_data['quantity'];
    $line_subtotal = $item_data['sub_total'];
    $line_total    = $item_data['total'];
    

    2)获取相关的WC_Product对象使用:

    $product_data = $item['product']->get_data();    
    $product_price = $product_data['price'];
    

    您只需使用str_replace()删除 euro 符号和 spaces'€'' ' ):

    $price = str_replace( array(' ', '€'), array('', ''), floatval( $item['price'] ) );
    

    您将获得一个可以在计算中使用的数字(此处为250)

相关问题