从格式化价格中提取WooCommerce

时间:2017-07-23 11:09:57

标签: php wordpress woocommerce orders price

我正在使用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.'<br/>';
echo strlen($price).'<br/>';
echo substr($price,0,10).'<br/>';
echo strlen(trim(substr($price,0,10))).'<br/>';

显示:

  

250.00€
  119个
  10

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

可能是根本原因?

由于

1 个答案:

答案 0 :(得分:0)

<强>更新

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

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

...
tooltip.style.pointerEvents = 'none';
...

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

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

您只需使用pointer-events删除欧元符号和空格 $product_data = $item['product']->get_data(); $product_price = $product_data['price']; {{ 1}} )这样:

'€'
  

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