如何在 WooCommerce 3 中获取订单嵌套元数据
How do I get order nested meta data in WooCommerce 3
我们为 WooCommerce 安装了另一个名为 Booster Plus for WooCommerce
的插件,此插件可以通过 invoice number
支付订单来修改 checkout page
。
我也通过显示 invoice number
来自定义我们的 thank you page
。目前,我无法做到这一点,因为我不知道如何正确获取嵌套 $order->get_data()
结果的值。
<?php
$order_data = $order->get_data();
print_r($order_data);
?>
上面 order_data
的结果如下所示:
(
[id] => 7403
[discount_total] => 0
[discount_tax] => 0
[shipping_total] => 0.00
[shipping_tax] => 0
[cart_tax] => 2.47
[total] => 21.47
[total_tax] => 2.47
[customer_id] => 20
[order_key] => wc_order_8pt3q7T79
[billing] => Array
(
[first_name] => John
[last_name] => Done
[company] => g2x
[address_1] => 3134 James Street
[address_2] =>
[city] => Moose Factory
[state] => ON
[postcode] => P0L 1W0
[country] => CA
[email] => testjohndoe123@gmail.com
[phone] => 705-658-2112
)
[cart_hash] => 087347d19dff4677dc8kaeb2b2c653c6
[number] => 7403
[meta_data] => Array
(
[0] => WC_Meta_Data Object
(
[current_data:protected] => Array
(
[id] => 102652
[key] => mailchimp_woocommerce_campaign_id
[value] =>
)
[data:protected] => Array
(
[id] => 102652
[key] => mailchimp_woocommerce_campaign_id
[value] =>
)
)
[1] => WC_Meta_Data Object
[2] => WC_Meta_Data Object
[3] => WC_Meta_Data Object
[4] => WC_Meta_Data Object
[5] => WC_Meta_Data Object
(
[current_data:protected] => Array
(
[id] => 102694
[key] => _wcj_custom_payment_gateway_input_fields
[value] => Array
(
[pay_by_po] => 123456789
)
)
[data:protected] => Array
(
[id] => 102694
[key] => _wcj_custom_payment_gateway_input_fields
[value] => Array
(
[pay_by_po] => 123456789
)
)
)
[coupon_lines] => Array
()
)
你知道我怎样才能得到 [pay_by_po]
的值 123456789
吗?任何帮助是极大的赞赏。谢谢。
您可以使用 WC_data
method get_meta_data()
, which gives an array of WC_Meta_Data
对象获取和取消保护此嵌套元数据:
$meta_data = $order->get_meta_data();
print_r($order_data);
然后在每个 WC_Meta_Data
对象上,您可以像 get_data()
一样使用 WC_Meta_Data
available methods 来提供不受保护的数据数组:
foreach( $order->get_meta_data() as $meta_data_obj ) {
$meta_data_array = meta_data_obj->get_data();
print_r($meta_data_array);
$meta_key = $meta_data_array['key']; // The meta key
$meta_value = $meta_data_array['value']; // The meta value
}
您还可以使用 WC_Data
method get_meta()
从特定元键直接获取订单中的任何嵌套元数据,如下所示:
$meta_value = $order->get_meta('_wcj_custom_payment_gateway_input_fields');
print_r($meta_value);
Note This nested meta data exist since WooCommerce version 3.
关于摘要WC_Data
Class
它由 类 使用相同的 CRUD 模式实现。
直接知子类:
WC_Abstract_Legacy_Order
、WC_Abstract_Legacy_Product
、WC_Customer_Download
、WC_Customer_Download_Log
、WC_Legacy_Coupon
、WC_Legacy_Customer
、WC_Legacy_Payment_Token
、WC_Legacy_Shipping_Zone
、WC_Legacy_Webhook
, WC_Order_Item
间接已知子类:
WC_Abstract_Order
、WC_Coupon
、WC_Payment_Token
、WC_Payment_Token_CC
、WC_Payment_Token_ECheck
、WC_Product
、WC_Product_External
、WC_Product_Grouped
、WC_Product_Simple
, WC_Product_Variable
, WC_Product_Variation
, WC_Shipping_Zone
, WC_Customer
, WC_Webhook
, WC_Order
, WC_Order_Item_Coupon
, WC_Order_Item_Fee
, WC_Order_Item_Product
, WC_Order_Item_Shipping
, WC_Order_Item_Tax
, WC_Order_Refund
我们为 WooCommerce 安装了另一个名为 Booster Plus for WooCommerce
的插件,此插件可以通过 invoice number
支付订单来修改 checkout page
。
我也通过显示 invoice number
来自定义我们的 thank you page
。目前,我无法做到这一点,因为我不知道如何正确获取嵌套 $order->get_data()
结果的值。
<?php
$order_data = $order->get_data();
print_r($order_data);
?>
上面 order_data
的结果如下所示:
(
[id] => 7403
[discount_total] => 0
[discount_tax] => 0
[shipping_total] => 0.00
[shipping_tax] => 0
[cart_tax] => 2.47
[total] => 21.47
[total_tax] => 2.47
[customer_id] => 20
[order_key] => wc_order_8pt3q7T79
[billing] => Array
(
[first_name] => John
[last_name] => Done
[company] => g2x
[address_1] => 3134 James Street
[address_2] =>
[city] => Moose Factory
[state] => ON
[postcode] => P0L 1W0
[country] => CA
[email] => testjohndoe123@gmail.com
[phone] => 705-658-2112
)
[cart_hash] => 087347d19dff4677dc8kaeb2b2c653c6
[number] => 7403
[meta_data] => Array
(
[0] => WC_Meta_Data Object
(
[current_data:protected] => Array
(
[id] => 102652
[key] => mailchimp_woocommerce_campaign_id
[value] =>
)
[data:protected] => Array
(
[id] => 102652
[key] => mailchimp_woocommerce_campaign_id
[value] =>
)
)
[1] => WC_Meta_Data Object
[2] => WC_Meta_Data Object
[3] => WC_Meta_Data Object
[4] => WC_Meta_Data Object
[5] => WC_Meta_Data Object
(
[current_data:protected] => Array
(
[id] => 102694
[key] => _wcj_custom_payment_gateway_input_fields
[value] => Array
(
[pay_by_po] => 123456789
)
)
[data:protected] => Array
(
[id] => 102694
[key] => _wcj_custom_payment_gateway_input_fields
[value] => Array
(
[pay_by_po] => 123456789
)
)
)
[coupon_lines] => Array
()
)
你知道我怎样才能得到 [pay_by_po]
的值 123456789
吗?任何帮助是极大的赞赏。谢谢。
您可以使用 WC_data
method get_meta_data()
, which gives an array of WC_Meta_Data
对象获取和取消保护此嵌套元数据:
$meta_data = $order->get_meta_data();
print_r($order_data);
然后在每个 WC_Meta_Data
对象上,您可以像 get_data()
一样使用 WC_Meta_Data
available methods 来提供不受保护的数据数组:
foreach( $order->get_meta_data() as $meta_data_obj ) {
$meta_data_array = meta_data_obj->get_data();
print_r($meta_data_array);
$meta_key = $meta_data_array['key']; // The meta key
$meta_value = $meta_data_array['value']; // The meta value
}
您还可以使用 WC_Data
method get_meta()
从特定元键直接获取订单中的任何嵌套元数据,如下所示:
$meta_value = $order->get_meta('_wcj_custom_payment_gateway_input_fields');
print_r($meta_value);
Note This nested meta data exist since WooCommerce version 3.
关于摘要WC_Data
Class
它由 类 使用相同的 CRUD 模式实现。
直接知子类:
WC_Abstract_Legacy_Order
、WC_Abstract_Legacy_Product
、WC_Customer_Download
、WC_Customer_Download_Log
、WC_Legacy_Coupon
、WC_Legacy_Customer
、WC_Legacy_Payment_Token
、WC_Legacy_Shipping_Zone
、WC_Legacy_Webhook
, WC_Order_Item
间接已知子类:
WC_Abstract_Order
、WC_Coupon
、WC_Payment_Token
、WC_Payment_Token_CC
、WC_Payment_Token_ECheck
、WC_Product
、WC_Product_External
、WC_Product_Grouped
、WC_Product_Simple
, WC_Product_Variable
, WC_Product_Variation
, WC_Shipping_Zone
, WC_Customer
, WC_Webhook
, WC_Order
, WC_Order_Item_Coupon
, WC_Order_Item_Fee
, WC_Order_Item_Product
, WC_Order_Item_Shipping
, WC_Order_Item_Tax
, WC_Order_Refund