gpt4 book ai didi

php - 在 Woocommerce 3 中访问订单项目保护数据

转载 作者:可可西里 更新时间:2023-11-01 13:04:25 27 4
gpt4 key购买 nike

我正在尝试获取订单的行项目。

我这样做:

$order = new WC_Order(147);
foreach ($order->get_items() as $key => $lineItem) {
print_r('<pre>----');
print_r($lineItem);
print_r('----</pre>');
}

我可以看到我需要的所有数据,但数组显示如下:

[meta_data:protected] => Array

如何访问此数组以获取值?

谢谢。

最佳答案

Since WooCommerce 3.0+ for Order items there is new Object class WC_Order_Item_Product.
Now Order items properties can't be accessed directly as before

因此,如果您查看输出的原始数据,您会发现每个行项目现在都是一个对象,您将能够使用独占方式访问 protected 数据:

  1. WC_Order_Item_Product getters 方法(或用 setters 方法改变它)…
  2. WC_Order_Item get_formatted_meta_data( '', true ) 方法访问所有元数据。它给出了一组可访问的对象。参见 WC_Data方法 get_meta() 访问每个元数据。
  3. WC_Data getters 方法取消保护此数据并使用以下方法通过数组访问它:
    • get_data() (这个方法非常有用)
    • get_meta() (这个方法最有用)
    • get_data_keys()
    • get_meta_data() (不取消保护数据,使用get_formatted_meta_data())
  4. wc_get_order_item_meta()专用函数。

WC_Order_Item_Product getter 方法:

// Get an instance of the WC_Order object
$order = wc_get_order(147);

// Iterating through each order item
foreach ($order->get_items() as $item_id => $item ) {
echo $item->get_type().'<br>'; // The order item type
echo $item->get_product_id().'<br>'; // The Product ID
echo $item->get_variation_id().'<br>'; // The variation ID
echo $item->get_quantity().'<br>'; // Line item quantity
echo $item->get_subtotal().'<br>'; // Line item subtotal
echo $item->get_total().'<br>'; // Line item total

// The associated product object (which properties can't be accessed directly too)
echo '<pre>'; print_r( $item->get_product() ); echo '</pre>';

// ... and so on ...

## Testing raw output (protected)
// echo '<pre>'; print_r($item); echo '</pre>';
}

wc_get_order_item_meta()功能。在这里,您可以进入 wp_woocommerce_order_itemmeta 表并使用相应的 meta_key(对于 line_item 数据类型项目 ID):

// Get an instance of the WC_Order object
$order = wc_get_order(147);

// Iterating through each order item
foreach ($order->get_items() as $item_id => $item ) {

echo wc_get_order_item_meta( $item_id, '_product_id', true). '<br>'; // Product ID
echo wc_get_order_item_meta( $item_id, '_variation_id', true). '<br>'; // Variation ID
echo wc_get_order_item_meta( $item_id, '_qty', true). '<br>'; // quantity
echo wc_get_order_item_meta( $item_id, '_line_subtotal', true). '<br>'; // Line subtotal

// ... and so on ...

## Testing raw output (protected data)
// echo '<pre>'; print_r($item); echo '</pre>';
}

WC_Data方法 get_data() 方法(取消保护数组中的数据):

// Get an instance of the WC_Order object
$order = wc_get_order(147);

// Iterating through each order item
foreach ($order->get_items() as $item_id => $item ) {

// Get the most useful Item product data in an accessible array
$item_data = $item->get_data();

echo $item_data['id'].'<br>'; // The order item ID
echo $item_data['order_id'].'<br>'; // The order ID
echo $item_data['product_id'].'<br>'; // The Product ID
echo $item_data['variation_id'].'<br>'; // The Variation ID
echo $item_data['name'].'<br>'; // The Product title (name)
echo $item_data['quantity'].'<br>'; // Line item quantity
echo $item_data['subtotal'].'<br>'; // Line item subtotal
echo $item_data['total'].'<br>'; // Line item total

// ... and so on ...

WC_Data方法 get_meta() 方法(通过元键访问每个属性):

// Get an instance of the WC_Order object
$order = wc_get_order(147);

// Iterating through each order item
foreach ($order->get_items() as $item_id => $item ) {

echo $item->get_meta('_product_id').'<br>'; // The Product ID
echo $item->get_meta('_variation_id').'<br>'; // The Variation ID
echo $item->get_meta('_qty').'<br>'; // Line item quantity
echo $item->get_meta('_line_subtotal').'<br>'; // Line item subtotal
echo $item->get_meta('_line_subtotal_tax').'<br>'; // Line item subtotal tax
echo $item->get_meta('_line_total').'<br>'; // Line item total
echo $item->get_meta('_line_tax').'<br>'; // Line item total tax

// Product attributes for variation
echo $item->get_meta('pa_color').'<br>'; // Color
echo $item->get_meta('pa_size').'<br>'; // Color

// Custom item meta gata
echo $item->get_meta('custom_meta_key').'<br>'; // custom meta key visible


// ... and so on ...

相关:How to get WooCommerce order details

关于php - 在 Woocommerce 3 中访问订单项目保护数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43597491/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com